diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-11-24 10:12:07 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-02-22 15:31:25 -0500 |
commit | 6d3ee152fe05ffeb46af2f0d1066d46615832519 (patch) | |
tree | 5d450389b65e7481f937c654038081b6457b2fb5 | |
parent | a29fd4542e885cc8dff2e10ef5fc15912c6d4277 (diff) |
add context menus for tabbable visibility buttons
-rw-r--r-- | gtk2_ardour/ardour.menus.in | 23 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 23 |
3 files changed, 46 insertions, 1 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in index 16634f800e..1e618a49d6 100644 --- a/gtk2_ardour/ardour.menus.in +++ b/gtk2_ardour/ardour.menus.in @@ -564,7 +564,28 @@ </menu> </menubar> - <popup action="RulerMenuPopup"> + <popup action="editorTabbableButtonMenu"> + <menuitem action='show-editor'/> + <menuitem action='hide-editor'/> + <menuitem action='attach-editor'/> + <menuitem action='detach-editor'/> + </popup> + + <popup action="mixerTabbableButtonMenu"> + <menuitem action='show-mixer'/> + <menuitem action='hide-mixer'/> + <menuitem action='attach-mixer'/> + <menuitem action='detach-mixer'/> + </popup> + + <popup action="prefsTabbableButtonMenu"> + <menuitem action='show-preferences'/> + <menuitem action='hide-preferences'/> + <menuitem action='attach-preferences'/> + <menuitem action='detach-preferences'/> + </popup> + +<popup action="RulerMenuPopup"> <menuitem action="toggle-minsec-ruler"/> <menuitem action="toggle-timecode-ruler"/> <menuitem action="toggle-samples-ruler"/> diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index ab8561acd6..df98c27765 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -841,6 +841,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr bool idle_ask_about_quit (); void load_bindings (); + bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name); }; #endif /* __ardour_gui_h__ */ diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 9fdde7219f..35e8eca25d 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -577,6 +577,11 @@ ARDOUR_UI::build_menu_bar () mixer_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), mixer)); prefs_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), rc_option_editor)); + /* catch context clicks so that we can show a menu on these buttons */ + + editor_visibility_button.signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_visibility_button_press), X_("editor")), false); + mixer_visibility_button.signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_visibility_button_press), X_("mixer")), false); + prefs_visibility_button.signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_visibility_button_press), X_("preferences")), false); editor_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-editor-visibility"))); editor_visibility_button.set_name (X_("page switch button")); @@ -805,3 +810,21 @@ ARDOUR_UI::tabs() { return _tabs; } + +bool +ARDOUR_UI::tabbable_visibility_button_press (GdkEventButton* ev, string const& tabbable_name) +{ + if (ev->button != 3) { + return false; + } + + /* context menu is defined in *.menus.in + */ + + string menu_name = string ("/ui/") + tabbable_name + X_("TabbableButtonMenu"); + Gtk::Menu* menu = dynamic_cast<Gtk::Menu*> (ActionManager::get_widget (menu_name.c_str())); + if (menu) { + menu->popup (3, ev->time); + } + return true; +} |