diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index a6746b265d..26de6fe383 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -1449,141 +1449,140 @@ Editor::popup_fade_context_menu (int button, int32_t time, ArdourCanvas::Item* i } MenuList& items (fade_context_menu.items()); + items.clear (); - if (items.empty()) { - switch (item_type) { - case FadeInItem: - case FadeInHandleItem: - if (arv->audio_region()->fade_in_active()) { - items.push_back (MenuElem (_("Deactivate"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_active), false))); - } else { - items.push_back (MenuElem (_("Activate"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_active), true))); - } - - items.push_back (SeparatorElem()); - - if (Profile->get_sae()) { - - items.push_back (MenuElem (_("Linear"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeLinear))); - items.push_back (MenuElem (_("Slowest"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeFast))); - - } else { - - items.push_back ( - ImageMenuElem ( - _("Linear"), - *_fade_in_images[FadeLinear], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeLinear) - ) - ); - - dynamic_cast(&items.back())->set_always_show_image (); - - items.push_back ( - ImageMenuElem ( - _("Slow"), - *_fade_in_images[FadeSlow], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeSlow) - )); - - dynamic_cast(&items.back())->set_always_show_image (); - - items.push_back ( - ImageMenuElem ( - _("Fast"), - *_fade_in_images[FadeFast], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeFast) - )); - - dynamic_cast(&items.back())->set_always_show_image (); - - items.push_back ( - ImageMenuElem ( - _("Symmetric"), - *_fade_in_images[FadeSymmetric], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeSymmetric) - )); - - items.push_back ( - ImageMenuElem ( - _("Constant Power"), - *_fade_in_images[FadeConstantPower], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeConstantPower) - )); - - dynamic_cast(&items.back())->set_always_show_image (); - } - - break; - - case FadeOutItem: - case FadeOutHandleItem: - if (arv->audio_region()->fade_out_active()) { - items.push_back (MenuElem (_("Deactivate"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_active), false))); - } else { - items.push_back (MenuElem (_("Activate"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_active), true))); - } - - items.push_back (SeparatorElem()); - - if (Profile->get_sae()) { - items.push_back (MenuElem (_("Linear"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeLinear))); - items.push_back (MenuElem (_("Slowest"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeSlow))); - } else { - - items.push_back ( - ImageMenuElem ( - _("Linear"), - *_fade_out_images[FadeLinear], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeLinear) - ) - ); - - dynamic_cast(&items.back())->set_always_show_image (); - - items.push_back ( - ImageMenuElem ( - _("Slow"), - *_fade_out_images[FadeSlow], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeSlow) - )); - - dynamic_cast(&items.back())->set_always_show_image (); - - items.push_back ( - ImageMenuElem ( - _("Fast"), - *_fade_out_images[FadeFast], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeFast) - )); - - dynamic_cast(&items.back())->set_always_show_image (); - - items.push_back ( - ImageMenuElem ( - _("Symmetric"), - *_fade_out_images[FadeSymmetric], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeSymmetric) - )); - - items.push_back ( - ImageMenuElem ( - _("Constant Power"), - *_fade_out_images[FadeConstantPower], - sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeConstantPower) - )); - - dynamic_cast(&items.back())->set_always_show_image (); - } - - break; - - default: - fatal << _("programming error: ") - << X_("non-fade canvas item passed to popup_fade_context_menu()") - << endmsg; - /*NOTREACHED*/ + switch (item_type) { + case FadeInItem: + case FadeInHandleItem: + if (arv->audio_region()->fade_in_active()) { + items.push_back (MenuElem (_("Deactivate"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_active), false))); + } else { + items.push_back (MenuElem (_("Activate"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_active), true))); } + + items.push_back (SeparatorElem()); + + if (Profile->get_sae()) { + + items.push_back (MenuElem (_("Linear"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeLinear))); + items.push_back (MenuElem (_("Slowest"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeFast))); + + } else { + + items.push_back ( + ImageMenuElem ( + _("Linear"), + *_fade_in_images[FadeLinear], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeLinear) + ) + ); + + dynamic_cast(&items.back())->set_always_show_image (); + + items.push_back ( + ImageMenuElem ( + _("Slow"), + *_fade_in_images[FadeSlow], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeSlow) + )); + + dynamic_cast(&items.back())->set_always_show_image (); + + items.push_back ( + ImageMenuElem ( + _("Fast"), + *_fade_in_images[FadeFast], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeFast) + )); + + dynamic_cast(&items.back())->set_always_show_image (); + + items.push_back ( + ImageMenuElem ( + _("Symmetric"), + *_fade_in_images[FadeSymmetric], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeSymmetric) + )); + + items.push_back ( + ImageMenuElem ( + _("Constant Power"), + *_fade_in_images[FadeConstantPower], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_in_shape), FadeConstantPower) + )); + + dynamic_cast(&items.back())->set_always_show_image (); + } + + break; + + case FadeOutItem: + case FadeOutHandleItem: + if (arv->audio_region()->fade_out_active()) { + items.push_back (MenuElem (_("Deactivate"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_active), false))); + } else { + items.push_back (MenuElem (_("Activate"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_active), true))); + } + + items.push_back (SeparatorElem()); + + if (Profile->get_sae()) { + items.push_back (MenuElem (_("Linear"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeLinear))); + items.push_back (MenuElem (_("Slowest"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeSlow))); + } else { + + items.push_back ( + ImageMenuElem ( + _("Linear"), + *_fade_out_images[FadeLinear], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeLinear) + ) + ); + + dynamic_cast(&items.back())->set_always_show_image (); + + items.push_back ( + ImageMenuElem ( + _("Slow"), + *_fade_out_images[FadeSlow], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeSlow) + )); + + dynamic_cast(&items.back())->set_always_show_image (); + + items.push_back ( + ImageMenuElem ( + _("Fast"), + *_fade_out_images[FadeFast], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeFast) + )); + + dynamic_cast(&items.back())->set_always_show_image (); + + items.push_back ( + ImageMenuElem ( + _("Symmetric"), + *_fade_out_images[FadeSymmetric], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeSymmetric) + )); + + items.push_back ( + ImageMenuElem ( + _("Constant Power"), + *_fade_out_images[FadeConstantPower], + sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_out_shape), FadeConstantPower) + )); + + dynamic_cast(&items.back())->set_always_show_image (); + } + + break; + + default: + fatal << _("programming error: ") + << X_("non-fade canvas item passed to popup_fade_context_menu()") + << endmsg; + /*NOTREACHED*/ } fade_context_menu.popup (button, time);