From 6b564c4e06b010fbb118c3b802adcd282b00f0a4 Mon Sep 17 00:00:00 2001 From: YPozdnyakov Date: Sun, 8 Feb 2015 17:18:39 +0200 Subject: [PATCH] [Summary]: add keybindings Cmd-h (hide application) for mac --- gtk2_ardour/ardour_ui.cc | 7 +++++++ gtk2_ardour/ardour_ui.h | 1 + gtk2_ardour/ardour_ui_ed.cc | 4 +++- gtk2_ardour/mnemonic-us.bindings.in | 1 + libs/gtkmm2ext/application.cc | 6 ++++++ libs/gtkmm2ext/gtkapplication_quartz.mm | 8 +++++++- libs/gtkmm2ext/gtkmm2ext/application.h | 1 + libs/gtkmm2ext/gtkmm2ext/gtkapplication.h | 1 + 8 files changed, 27 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 0cda85e51e..abb781bf68 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -4878,3 +4878,10 @@ ARDOUR_UI::toggle_all_auto_return () } } +void +ARDOUR_UI::hide_application () +{ + Application::instance ()-> hide (); +} + + diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index e79bdb14d8..ffe2b46c13 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -381,6 +381,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void update_track_color_dialog (boost::shared_ptr route); void show_marker_inspector(); void show_track_color_dialog(); + void hide_application (); protected: friend class PublicEditor; diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 3f6db54ba7..749604a304 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -665,7 +665,9 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("AddTrackBus"), _("Add Track"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::add_route), (Gtk::Window*) 0)); - act = ActionManager::register_action (common_actions, X_("Quit"), _("Quit"), (hide_return (sigc::mem_fun(*this, &ARDOUR_UI::finish)))); + act = ActionManager::register_action (common_actions, X_("Quit"), _("Quit_custom"), (hide_return (sigc::mem_fun(*this, &ARDOUR_UI::finish)))); + act = ActionManager::register_action (common_actions, X_("Hide"), _("Hide"), sigc::mem_fun (*this, &ARDOUR_UI::hide_application)); + /* windows visibility actions */ diff --git a/gtk2_ardour/mnemonic-us.bindings.in b/gtk2_ardour/mnemonic-us.bindings.in index 98a4c05d01..f804467642 100644 --- a/gtk2_ardour/mnemonic-us.bindings.in +++ b/gtk2_ardour/mnemonic-us.bindings.in @@ -119,6 +119,7 @@ This mode provides many different operations on both regions and control points, ;; TOP ROW @sess|Common/Quit|<@PRIMARY@>q|quit +@sess|Common/Hide|<@PRIMARY@>h|hide @movp|Editor/jump-forward-to-mark|w|to next mark @movp|Editor/jump-backward-to-mark|q|to previous mark diff --git a/libs/gtkmm2ext/application.cc b/libs/gtkmm2ext/application.cc index 54efb4773f..eb1cea1b5f 100644 --- a/libs/gtkmm2ext/application.cc +++ b/libs/gtkmm2ext/application.cc @@ -58,6 +58,12 @@ Application::ready () gtk_application_ready (); } +void +Application::hide () +{ + gtk_application_hide (); +} + void Application::cleanup () { diff --git a/libs/gtkmm2ext/gtkapplication_quartz.mm b/libs/gtkmm2ext/gtkapplication_quartz.mm index 15bed20a22..6389444a86 100644 --- a/libs/gtkmm2ext/gtkapplication_quartz.mm +++ b/libs/gtkmm2ext/gtkapplication_quartz.mm @@ -1221,7 +1221,7 @@ create_apple_menu () [menuitem release]; [_app_menu addItem: [NSMenuItem separatorItem]]; menuitem = [[NSMenuItem alloc] initWithTitle:@"Hide" - action:@selector(hide:) keyEquivalent:@""]; + action:@selector(hide:) keyEquivalent:@"h"]; [menuitem setTarget: NSApp]; [_app_menu addItem: menuitem]; [menuitem release]; @@ -1475,6 +1475,12 @@ gtk_application_ready () //[[NSApplication sharedApplication] activateIgnoringOtherApps : YES]; } +extern "C" void +gtk_application_hide () +{ + [NSApp performSelector:@selector(hide:)]; +} + extern "C" void gtk_application_cleanup() { diff --git a/libs/gtkmm2ext/gtkmm2ext/application.h b/libs/gtkmm2ext/gtkmm2ext/application.h index f0d029d3e7..e66b6ea2ff 100644 --- a/libs/gtkmm2ext/gtkmm2ext/application.h +++ b/libs/gtkmm2ext/gtkmm2ext/application.h @@ -45,6 +45,7 @@ public: ~Application (); void ready (); + void hide (); void cleanup (); void set_menu_bar (Gtk::MenuShell&); GtkApplicationMenuGroup* add_app_menu_group (); diff --git a/libs/gtkmm2ext/gtkmm2ext/gtkapplication.h b/libs/gtkmm2ext/gtkmm2ext/gtkapplication.h index 83594fefbe..4e977de8a9 100644 --- a/libs/gtkmm2ext/gtkmm2ext/gtkapplication.h +++ b/libs/gtkmm2ext/gtkmm2ext/gtkapplication.h @@ -34,6 +34,7 @@ typedef struct _GtkApplicationMenuGroup GtkApplicationMenuGroup; LIBGTKMM2EXT_API int gtk_application_init (void); LIBGTKMM2EXT_API void gtk_application_ready (void); +LIBGTKMM2EXT_API void gtk_application_hide (void); LIBGTKMM2EXT_API void gtk_application_cleanup (void); LIBGTKMM2EXT_API void gtk_application_set_menu_bar (GtkMenuShell *menu_shell);