diff --git a/src/WindowListener.vala b/src/WindowListener.vala index f822f7fbe..94b6c6c7e 100644 --- a/src/WindowListener.vala +++ b/src/WindowListener.vala @@ -55,6 +55,7 @@ public class Gala.WindowListener : Object { public signal void window_workspace_changed (Meta.Window window); public signal void window_on_all_workspaces_changed (Meta.Window window); + public signal void window_type_changed (Meta.Window window); private Gee.HashMap unmaximized_state_geometry; @@ -81,6 +82,9 @@ public class Gala.WindowListener : Object { case "on-all-workspaces": window_on_all_workspaces_changed (window); break; + case "window-type": + window_type_changed (window); + break; } } diff --git a/src/WindowManager.vala b/src/WindowManager.vala index f8b2ec257..883f1e7ea 100644 --- a/src/WindowManager.vala +++ b/src/WindowManager.vala @@ -47,7 +47,7 @@ namespace Gala { * It will (eventually) never be hidden by other components and is always on top of everything. Therefore elements are * responsible themselves for hiding depending on the state we are currently in (e.g. normal desktop, open multitasking view, fullscreen, etc.). */ - public Clutter.Actor shell_group { get; private set; } + private Clutter.Actor shell_group { get; private set; } private Clutter.Actor menu_group { get; set; } @@ -388,6 +388,13 @@ namespace Gala { InternalUtils.wait_for_window_actor_visible (window, check_shell_window) ); + WindowListener.get_default ().window_type_changed.connect ((window) => { + unowned var window_actor = (Meta.WindowActor) window.get_compositor_private (); + if (window_actor != null) { + check_shell_window (window_actor); + } + }); + stage.show (); plugin_manager.load_waiting_plugins ();