diff --git a/src/MainWindow.vala b/src/MainWindow.vala index eb397b20..9ca63f63 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -106,14 +106,11 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { MonitorApp.settings.set_int ("window-height", window_height); MonitorApp.settings.set_boolean ("is-maximized", this.is_maximized); - if (MonitorApp.settings.get_boolean ("indicator-state")) { - this.hide_on_delete (); - } else { + if (!MonitorApp.settings.get_boolean ("indicator-state")) { dbusserver.indicator_state (false); - application.quit (); } - return true; + return Gdk.EVENT_PROPAGATE; }); dbusserver.indicator_state (MonitorApp.settings.get_boolean ("indicator-state")); diff --git a/src/Monitor.vala b/src/Monitor.vala index 813cfb41..b4b8155e 100644 --- a/src/Monitor.vala +++ b/src/Monitor.vala @@ -9,6 +9,7 @@ namespace Monitor { private MainWindow window = null; public string[] args; + private bool held = false; private static bool start_in_background = false; private static bool status_background = false; private const GLib.OptionEntry[] CMD_OPTIONS = { @@ -41,6 +42,20 @@ namespace Monitor { // Controls the direction of the sort indicators Gtk.Settings.get_default ().set ("gtk-alternative-sort-arrows", true, null); + if (settings.get_boolean ("indicator-state")) { + held = true; + hold (); + } + + settings.changed["indicator-state"].connect (() => { + if (settings.get_boolean ("indicator-state")) { + held = true; + hold (); + } else if (held) { + release (); + } + }); + var quit_action = new SimpleAction ("quit", null); add_action (quit_action); quit_action.activate.connect (() => {