From 0c99f66547bedbac6c4ee8a6173e8699676bd44f Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 16 Mar 2011 11:37:08 +0100 Subject: [PATCH] Handle workspaces going empty due to windows changing monitors If a workspace becomes empty due to a window changing to/from the primary monitor, but not changing its original workspace then we were not noticing this. This can happen for instance if you drag a thumbnail window to a non-primary window. https://bugzilla.gnome.org/show_bug.cgi?id=609258 --- js/ui/main.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/js/ui/main.js b/js/ui/main.js index 2b4c20f46..b5589978d 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -219,6 +219,10 @@ function start() { } global.screen.connect('notify::n-workspaces', _nWorkspacesChanged); + + global.screen.connect('window-entered-monitor', _windowEnteredMonitor); + global.screen.connect('window-left-monitor', _windowLeftMonitor); + Mainloop.idle_add(_nWorkspacesChanged); } @@ -306,6 +310,20 @@ function _windowRemoved(workspace, window) { }); } +function _windowLeftMonitor(metaScreen, monitorIndex, metaWin) { + // If the window left the primary monitor, that + // might make that workspace empty + if (monitorIndex == global.get_primary_monitor_index()) + _queueCheckWorkspaces(); +} + +function _windowEnteredMonitor(metaScreen, monitorIndex, metaWin) { + // If the window entered the primary monitor, that + // might make that workspace non-empty + if (monitorIndex == global.get_primary_monitor_index()) + _queueCheckWorkspaces(); +} + function _queueCheckWorkspaces() { if (_checkWorkspacesId == 0) _checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces);