From c9a03db480a1363b8b12a2e6ce25c3bb1a80726c Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Sun, 9 Dec 2012 15:19:17 -0800 Subject: Consistent Quit behavior on the Mac We were responding to the wrong Quit signal on MacOS. The one we picked was the one that basically told us "it's too late to stop me, I'm quitting". I switched this to the one asking "should I prevent the app from quitting" and now we can indeed cancel the Quit, regardless which method was used to close the app. Also removes to unused variables. Fixes #22 Signed-off-by: Dirk Hohndel --- display-gtk.h | 1 + gtk-gui.c | 2 +- macos.c | 4 +--- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/display-gtk.h b/display-gtk.h index 5dc616bf9..3e12d8051 100644 --- a/display-gtk.h +++ b/display-gtk.h @@ -65,6 +65,7 @@ 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 gboolean on_delete(GtkWidget* w, gpointer data); extern int is_default_dive_computer_device(const char *name); diff --git a/gtk-gui.c b/gtk-gui.c index 7a4f108ad..e4928e905 100644 --- a/gtk-gui.c +++ b/gtk-gui.c @@ -331,7 +331,7 @@ static void file_open(GtkWidget *w, gpointer data) gtk_widget_destroy(dialog); } -static gboolean on_delete(GtkWidget* w, gpointer data) +gboolean on_delete(GtkWidget* w, gpointer data) { /* Make sure to flush any modified dive data */ update_dive(NULL); diff --git a/macos.c b/macos.c index e989d96a5..f6557bf3d 100644 --- a/macos.c +++ b/macos.c @@ -79,8 +79,6 @@ int subsurface_fill_device_list(GtkListStore *store) GtkTreeIter iter; GDir *dev; const char *name; - char *buffer; - gsize length; dev = g_dir_open("/dev", 0, NULL); while (dev && (name = g_dir_read_name(dev)) != NULL) { @@ -206,7 +204,7 @@ void subsurface_ui_setup(GtkSettings *settings, GtkWidget *menubar, 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); + g_signal_connect(osx_app, "NSApplicationBlockTermination", G_CALLBACK(on_delete), NULL); gtk_osxapplication_ready(osx_app); } -- cgit v1.2.3-70-g09d2