diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 45265a76f8..0d646c8add 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -4865,3 +4865,9 @@ ARDOUR_UI::audioengine_became_silent () break; } } + +void +ARDOUR_UI::hide_application () +{ + Application::instance ()-> hide (); +} diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 9a3e7e945b..b6ec8a8799 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -308,6 +308,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr int disconnect_from_engine (); int reconnect_to_engine (); + void hide_application (); protected: friend class PublicEditor; diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 90fac66052..c82c41c000 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -190,6 +190,7 @@ ARDOUR_UI::install_actions () common_actions = ActionGroup::create (X_("Common")); ActionManager::register_action (common_actions, X_("Quit"), _("Quit"), (hide_return (sigc::mem_fun(*this, &ARDOUR_UI::finish)))); + 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 174f26dcf8..6819ef92f8 100644 --- a/gtk2_ardour/mnemonic-us.bindings.in +++ b/gtk2_ardour/mnemonic-us.bindings.in @@ -139,6 +139,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 0a6171eb16..faefd6b6ac 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]; @@ -1476,6 +1476,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/gtkapplication_win32.c b/libs/gtkmm2ext/gtkapplication_win32.c index 78d538b334..7dd9db4a8d 100644 --- a/libs/gtkmm2ext/gtkapplication_win32.c +++ b/libs/gtkmm2ext/gtkapplication_win32.c @@ -47,3 +47,8 @@ void gtk_application_ready (void) { } + +void +gtk_application_hide (void) +{ +} diff --git a/libs/gtkmm2ext/gtkapplication_x11.c b/libs/gtkmm2ext/gtkapplication_x11.c index 2b85677073..6cf1055c5c 100644 --- a/libs/gtkmm2ext/gtkapplication_x11.c +++ b/libs/gtkmm2ext/gtkapplication_x11.c @@ -50,3 +50,8 @@ void gtk_application_ready (void) { } + +void +gtk_application_hide (void) +{ +} 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);