diff options
| author | Thomas Holder <thomas@thomas-holder.de> | 2019-06-22 15:52:47 +0000 |
|---|---|---|
| committer | Thomas Holder <thomas@thomas-holder.de> | 2019-06-22 15:52:47 +0000 |
| commit | 9adaf7a8bdfe7b800fa5be3e46f7950dd6b7dfbb (patch) | |
| tree | accf83a3e1407e394a3e58f59b58f226e905f3d6 /src/inkscape-application.cpp | |
| parent | fix inbox#537 macOS Window menu (diff) | |
| download | inkscape-9adaf7a8bdfe7b800fa5be3e46f7950dd6b7dfbb.tar.gz inkscape-9adaf7a8bdfe7b800fa5be3e46f7950dd6b7dfbb.zip | |
fix inbox#595 macOS NSApplicationBlockTermination
Diffstat (limited to 'src/inkscape-application.cpp')
| -rw-r--r-- | src/inkscape-application.cpp | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/src/inkscape-application.cpp b/src/inkscape-application.cpp index fb0485719..789ae5c94 100644 --- a/src/inkscape-application.cpp +++ b/src/inkscape-application.cpp @@ -596,6 +596,7 @@ ConcreteInkscapeApplication<Gio::Application>::on_startup2() #ifdef GDK_WINDOWING_QUARTZ static gboolean osx_openfile_callback(GtkosxApplication *, gchar const *, ConcreteInkscapeApplication<Gtk::Application> *); +static gboolean osx_quit_callback(GtkosxApplication *, ConcreteInkscapeApplication<Gtk::Application> *); #endif template<> @@ -644,6 +645,7 @@ ConcreteInkscapeApplication<Gtk::Application>::on_startup2() #ifdef GDK_WINDOWING_QUARTZ GtkosxApplication *osxapp = gtkosx_application_get(); g_signal_connect(G_OBJECT(osxapp), "NSApplicationOpenFile", G_CALLBACK(osx_openfile_callback), this); + g_signal_connect(G_OBJECT(osxapp), "NSApplicationBlockTermination", G_CALLBACK(osx_quit_callback), this); #endif } @@ -740,20 +742,6 @@ ConcreteInkscapeApplication<Gtk::Application>::create_window(const Glib::RefPtr< return (desktop); // Temp: Need to track desktop for shell mode. } -#ifdef GDK_WINDOWING_QUARTZ -/** - * On macOS, handle dropping files on Inkscape.app icon and "Open With" file association. - */ -static gboolean osx_openfile_callback(GtkosxApplication *osxapp, gchar const *path, - ConcreteInkscapeApplication<Gtk::Application> *app) -{ - auto ptr = Gio::File::create_for_path(path); - g_return_val_if_fail(ptr, false); - app->create_window(ptr); - return true; -} -#endif - /** No need to destroy window if T is Gio::Application. */ template<class T> @@ -1374,6 +1362,31 @@ ConcreteInkscapeApplication<Gtk::Application>::on_quit() quit(); } +// ======================== macOS ============================= + +#ifdef GDK_WINDOWING_QUARTZ +/** + * On macOS, handle dropping files on Inkscape.app icon and "Open With" file association. + */ +static gboolean osx_openfile_callback(GtkosxApplication *osxapp, gchar const *path, + ConcreteInkscapeApplication<Gtk::Application> *app) +{ + auto ptr = Gio::File::create_for_path(path); + g_return_val_if_fail(ptr, false); + app->create_window(ptr); + return true; +} + +/** + * Handle macOS terminating the application + */ +static gboolean osx_quit_callback(GtkosxApplication *, ConcreteInkscapeApplication<Gtk::Application> *app) +{ + app->destroy_all(); + return true; +} +#endif + template class ConcreteInkscapeApplication<Gio::Application>; template class ConcreteInkscapeApplication<Gtk::Application>; |
