summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2012-12-09 15:19:17 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2012-12-09 15:23:33 -0800
commitc9a03db480a1363b8b12a2e6ce25c3bb1a80726c (patch)
tree6ae756e22d84a5438cfdaa0c539bef5cd54e80d2
parenta72597189ddccf4e495b52d964d175477414abb9 (diff)
downloadsubsurface-c9a03db480a1363b8b12a2e6ce25c3bb1a80726c.tar.gz
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 <dirk@hohndel.org>
-rw-r--r--display-gtk.h1
-rw-r--r--gtk-gui.c2
-rw-r--r--macos.c4
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);
}