workspaceThumbnail: Update monitor index on 'monitors-changed'
For the primary monitor workspace thumbnail, we must keep the monitor index in sync with what is currently the primary monitor index, otherwise we might end up trying to move windows to non-existing monitors. For example, if the primary monitor index was 1 when the thumbnail box was created, but later, the primary monitor index changed to 0, with the other monitor being turned off, moving a window to one of the workspaces on the workspace thumbnail, gnome-shell would attempt to move it to the monitor with the index the primary monitor had in the past, with the problem being that that monitor no longer exists. Fix this by listening on the 'monitors-changed' signal on the layout manager, and update the monitor index of the primary workspace thumbnails box. Make sure to connect to the signal before creating the thumbnails box, as the thumbnails box itself will listen to the signal and recreate its actual thumbnails, and it must do this with the up to date monitor index. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4075 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1810>
This commit is contained in:
parent
f76e6877c7
commit
1f0ef7fb46
@ -341,6 +341,9 @@ class ControlsManager extends St.Widget {
|
|||||||
this.dash.showAppsButton);
|
this.dash.showAppsButton);
|
||||||
this._searchController.connect('notify::search-active', this._onSearchChanged.bind(this));
|
this._searchController.connect('notify::search-active', this._onSearchChanged.bind(this));
|
||||||
|
|
||||||
|
Main.layoutManager.connect('monitors-changed', () => {
|
||||||
|
this._thumbnailsBox.setMonitorIndex(Main.layoutManager.primaryIndex);
|
||||||
|
});
|
||||||
this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox(
|
this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox(
|
||||||
this._workspaceAdjustment, Main.layoutManager.primaryIndex);
|
this._workspaceAdjustment, Main.layoutManager.primaryIndex);
|
||||||
this._thumbnailsBox.connect('notify::should-show', () => {
|
this._thumbnailsBox.connect('notify::should-show', () => {
|
||||||
|
@ -715,6 +715,10 @@ var ThumbnailsBox = GObject.registerClass({
|
|||||||
() => this._updateIndicator());
|
() => this._updateIndicator());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setMonitorIndex(monitorIndex) {
|
||||||
|
this._monitorIndex = monitorIndex;
|
||||||
|
}
|
||||||
|
|
||||||
_onDestroy() {
|
_onDestroy() {
|
||||||
this._unqueueUpdateStates();
|
this._unqueueUpdateStates();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user