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
This commit is contained in:
parent
df440496ee
commit
0c99f66547
@ -219,6 +219,10 @@ function start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
global.screen.connect('notify::n-workspaces', _nWorkspacesChanged);
|
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);
|
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() {
|
function _queueCheckWorkspaces() {
|
||||||
if (_checkWorkspacesId == 0)
|
if (_checkWorkspacesId == 0)
|
||||||
_checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces);
|
_checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces);
|
||||||
|
Loading…
Reference in New Issue
Block a user