summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--display-gtk.h1
-rw-r--r--gtk-gui.c2
-rw-r--r--macos.c9
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;
diff --git a/gtk-gui.c b/gtk-gui.c
index e520d9b75..cd7ebe5cc 100644
--- a/gtk-gui.c
+++ b/gtk-gui.c
@@ -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);
diff --git a/macos.c b/macos.c
index f2e58338e..d37b0a925 100644
--- a/macos.c
+++ b/macos.c
@@ -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);
}