Move restacking handling from WorkspacesView to WorkspacesDisplay
Moving the base tracking of restacking to WorkspacesDisplay will allow us to use it to update stacking in the workspace thumbnails as well as in the main workspaces. https://bugzilla.gnome.org/show_bug.cgi?id=640996
This commit is contained in:
parent
7c2aee3ac0
commit
eda12542c0
@ -77,7 +77,6 @@ WorkspacesView.prototype = {
|
|||||||
this._overviewShowingId =
|
this._overviewShowingId =
|
||||||
Main.overview.connect('showing',
|
Main.overview.connect('showing',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this._onRestacked();
|
|
||||||
for (let w = 0; w < this._workspaces.length; w++)
|
for (let w = 0; w < this._workspaces.length; w++)
|
||||||
this._workspaces[w].zoomToOverview();
|
this._workspaces[w].zoomToOverview();
|
||||||
}));
|
}));
|
||||||
@ -99,9 +98,6 @@ WorkspacesView.prototype = {
|
|||||||
this._switchWorkspaceNotifyId =
|
this._switchWorkspaceNotifyId =
|
||||||
global.window_manager.connect('switch-workspace',
|
global.window_manager.connect('switch-workspace',
|
||||||
Lang.bind(this, this._activeWorkspaceChanged));
|
Lang.bind(this, this._activeWorkspaceChanged));
|
||||||
this._restackedNotifyId =
|
|
||||||
global.screen.connect('restacked',
|
|
||||||
Lang.bind(this, this._onRestacked));
|
|
||||||
|
|
||||||
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
|
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
|
||||||
Lang.bind(this, this._dragBegin));
|
Lang.bind(this, this._dragBegin));
|
||||||
@ -207,15 +203,7 @@ WorkspacesView.prototype = {
|
|||||||
return this._workspaces[0].scale;
|
return this._workspaces[0].scale;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onRestacked: function() {
|
syncStacking: function(stackIndices) {
|
||||||
let stack = global.get_window_actors();
|
|
||||||
let stackIndices = {};
|
|
||||||
|
|
||||||
for (let i = 0; i < stack.length; i++) {
|
|
||||||
// Use the stable sequence for an integer to use as a hash key
|
|
||||||
stackIndices[stack[i].get_meta_window().get_stable_sequence()] = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].syncStacking(stackIndices);
|
this._workspaces[i].syncStacking(stackIndices);
|
||||||
},
|
},
|
||||||
@ -502,7 +490,6 @@ WorkspacesView.prototype = {
|
|||||||
this._scrollAdjustment.run_dispose();
|
this._scrollAdjustment.run_dispose();
|
||||||
Main.overview.disconnect(this._overviewShowingId);
|
Main.overview.disconnect(this._overviewShowingId);
|
||||||
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
||||||
global.screen.disconnect(this._restackedNotifyId);
|
|
||||||
|
|
||||||
if (this._timeoutId) {
|
if (this._timeoutId) {
|
||||||
Mainloop.source_remove(this._timeoutId);
|
Mainloop.source_remove(this._timeoutId);
|
||||||
@ -824,6 +811,10 @@ WorkspacesDisplay.prototype = {
|
|||||||
global.screen.connect('notify::n-workspaces',
|
global.screen.connect('notify::n-workspaces',
|
||||||
Lang.bind(this, this._workspacesChanged));
|
Lang.bind(this, this._workspacesChanged));
|
||||||
|
|
||||||
|
this._restackedNotifyId =
|
||||||
|
global.screen.connect('restacked',
|
||||||
|
Lang.bind(this, this._onRestacked));
|
||||||
|
|
||||||
if (this._itemDragBeginId == 0)
|
if (this._itemDragBeginId == 0)
|
||||||
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
|
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
|
||||||
Lang.bind(this, this._dragBegin));
|
Lang.bind(this, this._dragBegin));
|
||||||
@ -836,6 +827,8 @@ WorkspacesDisplay.prototype = {
|
|||||||
if (this._windowDragEndId == 0)
|
if (this._windowDragEndId == 0)
|
||||||
this._windowDragEndId = Main.overview.connect('window-drag-end',
|
this._windowDragEndId = Main.overview.connect('window-drag-end',
|
||||||
Lang.bind(this, this._dragEnd));
|
Lang.bind(this, this._dragEnd));
|
||||||
|
|
||||||
|
this._onRestacked();
|
||||||
},
|
},
|
||||||
|
|
||||||
hide: function() {
|
hide: function() {
|
||||||
@ -845,6 +838,10 @@ WorkspacesDisplay.prototype = {
|
|||||||
global.screen.disconnect(this._nWorkspacesNotifyId);
|
global.screen.disconnect(this._nWorkspacesNotifyId);
|
||||||
this._nWorkspacesNotifyId = 0;
|
this._nWorkspacesNotifyId = 0;
|
||||||
}
|
}
|
||||||
|
if (this._restackedNotifyId > 0){
|
||||||
|
global.screen.disconnect(this._restackedNotifyId);
|
||||||
|
this._restackedNotifyId = 0;
|
||||||
|
}
|
||||||
if (this._itemDragBeginId > 0) {
|
if (this._itemDragBeginId > 0) {
|
||||||
Main.overview.disconnect(this._itemDragBeginId);
|
Main.overview.disconnect(this._itemDragBeginId);
|
||||||
this._itemDragBeginId = 0;
|
this._itemDragBeginId = 0;
|
||||||
@ -870,6 +867,18 @@ WorkspacesDisplay.prototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onRestacked: function() {
|
||||||
|
let stack = global.get_window_actors();
|
||||||
|
let stackIndices = {};
|
||||||
|
|
||||||
|
for (let i = 0; i < stack.length; i++) {
|
||||||
|
// Use the stable sequence for an integer to use as a hash key
|
||||||
|
stackIndices[stack[i].get_meta_window().get_stable_sequence()] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.workspacesView.syncStacking(stackIndices);
|
||||||
|
},
|
||||||
|
|
||||||
_workspacesChanged: function() {
|
_workspacesChanged: function() {
|
||||||
let oldNumWorkspaces = this._workspaces.length;
|
let oldNumWorkspaces = this._workspaces.length;
|
||||||
let newNumWorkspaces = global.screen.n_workspaces;
|
let newNumWorkspaces = global.screen.n_workspaces;
|
||||||
|
Loading…
Reference in New Issue
Block a user