summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-11-24 10:12:07 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2016-02-22 15:31:25 -0500
commit6d3ee152fe05ffeb46af2f0d1066d46615832519 (patch)
tree5d450389b65e7481f937c654038081b6457b2fb5
parenta29fd4542e885cc8dff2e10ef5fc15912c6d4277 (diff)
add context menus for tabbable visibility buttons
-rw-r--r--gtk2_ardour/ardour.menus.in23
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc23
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;
+}