diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2012-09-12 09:18:56 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2012-09-12 09:18:56 -0700 |
commit | 1ae4b80027a97e8fbe553b980dc17ea540000d88 (patch) | |
tree | baeff455c1161ebd295c0484344a409264f8d1e3 | |
parent | 1afe36840ddbc2d139c1f7e2b3607aecc88d9890 (diff) | |
download | subsurface-1ae4b80027a97e8fbe553b980dc17ea540000d88.tar.gz |
Make sure Subsurface receives Quit / Command-Q callback on Mac
As usual, things work slightly different on Mac. Quartz delivers some (but not
all) accelerator notifications differently. Command-Q and Subsurface->Quit now
work on Mac as well.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | display-gtk.h | 1 | ||||
-rw-r--r-- | gtk-gui.c | 2 | ||||
-rw-r--r-- | macos.c | 9 |
3 files changed, 11 insertions, 1 deletions
diff --git a/display-gtk.h b/display-gtk.h index e03861d39..9d0ea4ed3 100644 --- a/display-gtk.h +++ b/display-gtk.h @@ -49,6 +49,7 @@ extern const char *subsurface_USB_name(void); extern const char *subsurface_icon_name(void); extern void subsurface_ui_setup(GtkSettings *settings, GtkWidget *menubar, GtkWidget *vbox, GtkUIManager *ui_manager); +extern void quit(GtkWidget *w, gpointer data); extern visible_cols_t visible_cols; @@ -355,7 +355,7 @@ static void on_destroy(GtkWidget* w, gpointer data) gtk_main_quit(); } -static void quit(GtkWidget *w, gpointer data) +void quit(GtkWidget *w, gpointer data) { /* Make sure to flush any modified dive data */ update_dive(NULL); @@ -104,6 +104,12 @@ const char *subsurface_default_filename() } } +static void show_main_window(GtkWidget *w, gpointer data) +{ + gtk_widget_show(main_window); + gtk_window_present(GTK_WINDOW(main_window)); +} + void subsurface_ui_setup(GtkSettings *settings, GtkWidget *menubar, GtkWidget *vbox, GtkUIManager *ui_manager) { @@ -141,5 +147,8 @@ void subsurface_ui_setup(GtkSettings *settings, GtkWidget *menubar, gtk_osxapplication_insert_app_menu_item (osx_app, sep, 3); gtk_osxapplication_set_use_quartz_accelerators(osx_app, TRUE); + g_signal_connect(osx_app,"NSApplicationDidBecomeActive",G_CALLBACK(show_main_window),NULL); + g_signal_connect(osx_app,"NSApplicationWillTerminate",G_CALLBACK(quit),NULL); + gtk_osxapplication_ready(osx_app); } |