summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui_ed.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-01-15 17:50:03 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-01-15 17:50:03 +0000
commita3b0f8c576796b97ff4ae96b5bae2186c3eb8a2c (patch)
treebcc8b61c49b4195e230e849978727ce9ea187563 /gtk2_ardour/ardour_ui_ed.cc
parent79910087b918c7df65f844063963b18f1d5eead6 (diff)
tidy up and abstract the GtkApplication concept a bit for OS X integration
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@6496 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/ardour_ui_ed.cc')
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc28
1 files changed, 24 insertions, 4 deletions
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index b795bc5ae8..30e8488106 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -42,6 +42,7 @@
#include "utils.h"
#include <gtkmm2ext/gtkapplication.h>
+#include <gtkmm2ext/application.h>
#include <ardour/session.h>
#include <ardour/profile.h>
@@ -851,10 +852,29 @@ ARDOUR_UI::build_menu_bar ()
void
ARDOUR_UI::use_menubar_as_top_menubar ()
{
-#ifdef GTKOSX
- gtk_application_set_menu_bar ((GtkMenuShell*) menu_bar->gobj());
- // ige_mac_menu_set_quit_menu_item (some_item->gobj());
-#endif
+ Gtk::Widget* widget;
+ Application* app = Application::instance ();
+
+ /* Quit will be taken of separately */
+
+ if ((widget = ActionManager::get_widget ("/ui/Main/Session/Quit"))) {
+ widget->hide ();
+ }
+
+ GtkApplicationMenuGroup* group = app->add_app_menu_group ();
+
+ if ((widget = ActionManager::get_widget ("/ui/Main/Help/About"))) {
+ app->add_app_menu_item (group, dynamic_cast<MenuItem*>(widget));
+ }
+
+ if ((widget = ActionManager::get_widget ("/ui/Main/WindowMenu/ToggleOptionsEditor"))) {
+ app->add_app_menu_item (group, dynamic_cast<MenuItem*>(widget));
+ }
+
+ app->set_menu_bar (*menu_bar);
+
+ app->ShouldQuit.connect (sigc::mem_fun (*this, &UI::quit));
+ app->ShouldLoad.connect (sigc::mem_fun (*this, &ARDOUR_UI::idle_load));
}
void