From 7664aee55d0869b4b4eb771ea3461dec3a4e078f Mon Sep 17 00:00:00 2001 From: Felipe Escoto Date: Sun, 16 Jul 2017 11:40:08 -0500 Subject: [PATCH] windowmenu: Avoid applying previous settings to new window (#20) There is only one menu made that is shared across all windows. Setting always_on_top.active caused the activate (and toggled as well) signal to execute, causing the current window to get the results of the previous window. --- src/Widgets/WindowMenu.vala | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Widgets/WindowMenu.vala b/src/Widgets/WindowMenu.vala index 8f8b1304..b2ad6c76 100644 --- a/src/Widgets/WindowMenu.vala +++ b/src/Widgets/WindowMenu.vala @@ -25,13 +25,22 @@ namespace Gala */ public class WindowMenu : Gtk.Menu { + ulong always_on_top_handler_id; + ulong on_visible_workspace_handler_id; + public Meta.Window current_window { get { return _current_window; } set { + SignalHandler.block (always_on_top, always_on_top_handler_id); + SignalHandler.block (on_visible_workspace, on_visible_workspace_handler_id); + _current_window = value; update_window (); + + SignalHandler.unblock (always_on_top, always_on_top_handler_id); + SignalHandler.unblock (on_visible_workspace, on_visible_workspace_handler_id); } } @@ -83,7 +92,7 @@ namespace Gala append (resize); always_on_top = new Gtk.CheckMenuItem.with_label (_("Always on Top")); - always_on_top.activate.connect (() => { + always_on_top_handler_id = always_on_top.activate.connect (() => { if (current_window.is_above ()) current_window.unmake_above (); else @@ -92,7 +101,7 @@ namespace Gala append (always_on_top); on_visible_workspace = new Gtk.CheckMenuItem.with_label (_("Always on Visible Workspace")); - on_visible_workspace.activate.connect (() => { + on_visible_workspace_handler_id = on_visible_workspace.activate.connect (() => { if (current_window.on_all_workspaces) current_window.unstick (); else