From 28903bcceaa43393492f5426dcd2ab079eeed3bd Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 10 Jan 2015 05:11:21 +0000 Subject: OSX quit integration. Save settings on exit. git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@5514 a436a847-0d15-0410-975c-d299462d15a1 --- src/Patchage.cpp | 25 +++++++++++++++++++++---- src/Patchage.hpp | 1 + 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Patchage.cpp b/src/Patchage.cpp index 1944ef3..250704a 100644 --- a/src/Patchage.cpp +++ b/src/Patchage.cpp @@ -61,6 +61,15 @@ can_activate_cb(GtkWidget* widget, guint signal_id, gpointer data) { return gtk_widget_is_sensitive(widget); } + +static void +terminate_cb(GtkosxApplication* app, gpointer data) +{ + Patchage* patchage = (Patchage*)data; + patchage->save(); + Gtk::Main::quit(); +} + #endif #ifdef HAVE_ALSA @@ -304,21 +313,20 @@ Patchage::Patchage(int argc, char** argv) GtkosxApplication* osxapp = (GtkosxApplication*)g_object_new( GTKOSX_TYPE_APPLICATION, NULL); _menubar->hide(); + _menu_file_quit->hide(); gtkosx_application_set_menu_bar(osxapp, GTK_MENU_SHELL(_menubar->gobj())); gtkosx_application_insert_app_menu_item( osxapp, GTK_WIDGET(_menu_help_about->gobj()), 0); g_signal_connect(_menubar->gobj(), "can-activate-accel", G_CALLBACK(can_activate_cb), NULL); + g_signal_connect(osxapp, "NSApplicationWillTerminate", + G_CALLBACK(terminate_cb), this); gtkosx_application_ready(osxapp); #endif } Patchage::~Patchage() { - store_window_location(); - _conf->set_zoom(_canvas->get_zoom()); // Can be changed by ganv - _conf->save(); - #if defined(PATCHAGE_LIBJACK) || defined(HAVE_JACK_DBUS) delete _jack_driver; #endif @@ -855,9 +863,18 @@ Patchage::on_legend_color_change(int id, const std::string& label, uint32_t rgba _canvas->for_each_edge(update_edge_color, this); } +void +Patchage::save() +{ + store_window_location(); + _conf->set_zoom(_canvas->get_zoom()); // Can be changed by ganv + _conf->save(); +} + void Patchage::on_quit() { + save(); #ifdef HAVE_ALSA _alsa_driver->detach(); #endif diff --git a/src/Patchage.hpp b/src/Patchage.hpp index 7531fcb..2cc9347 100644 --- a/src/Patchage.hpp +++ b/src/Patchage.hpp @@ -76,6 +76,7 @@ public: Glib::RefPtr xml() { return _xml; } void attach(); + void save(); void quit() { _main_win->hide(); } void refresh(); -- cgit v1.2.1