workspaceThumbnails: Handle reordering of workspaces

MetaWorkspaceManager gained the ability to reorder workspaces, so make
sure to pick up the new order when that happens.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/620
This commit is contained in:
Florian Müllner 2019-07-09 14:26:12 +02:00
parent d0da96ad29
commit 68e45eb051

View File

@ -865,6 +865,13 @@ class ThumbnailsBox extends St.Widget {
this._nWorkspacesNotifyId = this._nWorkspacesNotifyId =
workspaceManager.connect('notify::n-workspaces', workspaceManager.connect('notify::n-workspaces',
this._workspacesChanged.bind(this)); this._workspacesChanged.bind(this));
this._workspacesReorderedId =
workspaceManager.connect('workspaces-reordered', () => {
this._thumbnails.sort((a, b) => {
return a.metaWorkspace.index() - b.metaWorkspace.index();
});
this.queue_relayout();
});
this._syncStackingId = this._syncStackingId =
Main.overview.connect('windows-restacked', Main.overview.connect('windows-restacked',
this._syncStacking.bind(this)); this._syncStacking.bind(this));
@ -896,6 +903,11 @@ class ThumbnailsBox extends St.Widget {
workspaceManager.disconnect(this._nWorkspacesNotifyId); workspaceManager.disconnect(this._nWorkspacesNotifyId);
this._nWorkspacesNotifyId = 0; this._nWorkspacesNotifyId = 0;
} }
if (this._workspacesReorderedId > 0) {
let workspaceManager = global.workspace_manager;
workspaceManager.disconnect(this._workspacesReorderedId);
this._workspacesReorderedId = 0;
}
if (this._syncStackingId > 0) { if (this._syncStackingId > 0) {
Main.overview.disconnect(this._syncStackingId); Main.overview.disconnect(this._syncStackingId);