diff options
Diffstat (limited to 'src/widgets/desktop-widget.cpp')
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index c48d6fbd5..e94448e2c 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -79,6 +79,9 @@ #include "toolbox.h" #include "widget-sizes.h" +#ifdef GDK_WINDOWING_QUARTZ +#include <gtkosxapplication.h> +#endif using Inkscape::DocumentUndo; using Inkscape::UI::Widget::UnitTracker; @@ -919,6 +922,17 @@ sp_desktop_widget_realize (GtkWidget *widget) window->get_style_context()->remove_class("symbolic"); } } + +#ifdef GDK_WINDOWING_QUARTZ + // native macOS menu + auto osxapp = gtkosx_application_get(); + auto menushell = static_cast<Gtk::MenuShell *>(dtw->menubar()); + if (osxapp && menushell && window) { + menushell->set_parent(*window); + gtkosx_application_set_menu_bar(osxapp, menushell->gobj()); + gtkosx_application_set_use_quartz_accelerators(osxapp, false); + } +#endif } /* This is just to provide access to common functionality from sp_desktop_widget_realize() above @@ -1677,7 +1691,12 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPDocument *document) dtw->_menubar = build_menubar(dtw->desktop); dtw->_menubar->set_name("MenuBar"); dtw->_menubar->show_all(); + +#ifdef GDK_WINDOWING_QUARTZ + // native macOS menu: do this later because we don't have the window handle yet +#else dtw->_vbox->pack_start(*dtw->_menubar, false, false); +#endif dtw->layoutWidgets(); |
