@@ -294,21 +294,31 @@ public class Gala.WindowTracker : GLib.Object {
294294 tracked_window_changed ((Meta . Window ) object );
295295 }
296296
297+ private void on_unmanaged (Meta .Window window ) {
298+ disassociate_window (window);
299+
300+ if (InternalUtils . get_window_is_normal (window)) {
301+ windows_changed ();
302+ }
303+ }
304+
297305 private void track_window (Meta .Window window ) {
298306 var app = get_app_for_window (window);
299307 if (app == null ) {
300308 return ;
301309 }
302310
303- window_to_app. insert (window, app);
304-
305311 window. notify[" wm-class" ]. connect (tracked_window_notified);
306312 window. notify[" gtk-application-id" ]. connect (tracked_window_notified);
307- window. unmanaged. connect (disassociate_window);
313+ window. notify[" window-type" ]. connect (tracked_window_notified);
314+ window. unmanaged. connect (on_unmanaged);
308315
309316 app. add_window (window);
317+ window_to_app. insert (window, app);
310318
311- windows_changed ();
319+ if (InternalUtils . get_window_is_normal (window)) {
320+ windows_changed ();
321+ }
312322 }
313323
314324 private void disassociate_window (Meta .Window window ) {
@@ -317,12 +327,12 @@ public class Gala.WindowTracker : GLib.Object {
317327 return ;
318328 }
319329
320- window. unmanaged. disconnect (disassociate_window);
321330 window. notify[" wm-class" ]. disconnect (tracked_window_notified);
322331 window. notify[" gtk-application-id" ]. disconnect (tracked_window_notified);
332+ window. notify[" window-type" ]. disconnect (tracked_window_notified);
333+ window. unmanaged. disconnect (on_unmanaged);
334+
323335 app. remove_window (window);
324336 window_to_app. remove (window);
325-
326- windows_changed ();
327337 }
328338}
0 commit comments