workspaces-view: Simplify handling of removed workspaces
Workspaces used to contain the desktop background, so when a workspace was removed, we animated its actor to an off-screen position before destroying it. As the background has been removed a while ago, we can destroy the actor directly. https://bugzilla.gnome.org/show_bug.cgi?id=645031
This commit is contained in:
parent
0ae1556b94
commit
45c1a9eafb
@ -641,16 +641,6 @@ Workspace.prototype = {
|
||||
return this._windows.length == 0;
|
||||
},
|
||||
|
||||
/**
|
||||
* setReactive:
|
||||
* @reactive: %true iff the workspace should be reactive
|
||||
*
|
||||
* Set the workspace (desktop) reactive
|
||||
**/
|
||||
setReactive: function(reactive) {
|
||||
this.actor.reactive = reactive;
|
||||
},
|
||||
|
||||
// Only use this for n <= 20 say
|
||||
_factorial: function(n) {
|
||||
let result = 1;
|
||||
|
@ -51,7 +51,6 @@ WorkspacesView.prototype = {
|
||||
this._y = 0;
|
||||
this._workspaceRatioSpacing = 0;
|
||||
this._spacing = 0;
|
||||
this._lostWorkspaces = [];
|
||||
this._animating = false; // tweening
|
||||
this._scrolling = false; // swipe-scrolling
|
||||
this._animatingScroll = false; // programatically updating the adjustment
|
||||
@ -224,27 +223,6 @@ WorkspacesView.prototype = {
|
||||
this._updateVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
for (let l = 0; l < this._lostWorkspaces.length; l++) {
|
||||
let workspace = this._lostWorkspaces[l];
|
||||
|
||||
Tweener.removeTweens(workspace.actor);
|
||||
|
||||
workspace.actor.show();
|
||||
workspace.hideWindowsOverlays();
|
||||
|
||||
if (showAnimation) {
|
||||
Tweener.addTween(workspace.actor,
|
||||
{ y: workspace.x,
|
||||
time: WORKSPACE_SWITCH_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this,
|
||||
this._cleanWorkspaces)
|
||||
});
|
||||
} else {
|
||||
this._cleanWorkspaces();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
@ -265,17 +243,6 @@ WorkspacesView.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
_cleanWorkspaces: function() {
|
||||
if (this._lostWorkspaces.length == 0)
|
||||
return;
|
||||
|
||||
for (let l = 0; l < this._lostWorkspaces.length; l++)
|
||||
this._lostWorkspaces[l].destroy();
|
||||
this._lostWorkspaces = [];
|
||||
|
||||
this._updateWorkspaceActors(false);
|
||||
},
|
||||
|
||||
_updateScrollAdjustment: function(index, showAnimation) {
|
||||
if (this._scrolling)
|
||||
return;
|
||||
@ -298,12 +265,9 @@ WorkspacesView.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
updateWorkspaces: function(oldNumWorkspaces, newNumWorkspaces, lostWorkspaces) {
|
||||
updateWorkspaces: function(oldNumWorkspaces, newNumWorkspaces) {
|
||||
let active = global.screen.get_active_workspace_index();
|
||||
|
||||
for (let l = 0; l < lostWorkspaces.length; l++)
|
||||
lostWorkspaces[l].disconnectAll();
|
||||
|
||||
Tweener.addTween(this._scrollAdjustment,
|
||||
{ upper: newNumWorkspaces,
|
||||
time: WORKSPACE_SWITCH_TIME,
|
||||
@ -315,8 +279,6 @@ WorkspacesView.prototype = {
|
||||
this.actor.add_actor(this._workspaces[w].actor);
|
||||
|
||||
this._updateWorkspaceActors(false);
|
||||
} else {
|
||||
this._lostWorkspaces = lostWorkspaces;
|
||||
}
|
||||
|
||||
this._scrollToActive(true);
|
||||
@ -846,17 +808,16 @@ WorkspacesDisplay.prototype = {
|
||||
lostWorkspaces = this._workspaces.splice(removedIndex,
|
||||
removedNum);
|
||||
|
||||
// Don't let the user try to select this workspace as it's
|
||||
// making its exit.
|
||||
for (let l = 0; l < lostWorkspaces.length; l++)
|
||||
lostWorkspaces[l].setReactive(false);
|
||||
for (let l = 0; l < lostWorkspaces.length; l++) {
|
||||
lostWorkspaces[l].disconnectAll();
|
||||
lostWorkspaces[l].destroy();
|
||||
}
|
||||
|
||||
this._thumbnailsBox.removeThumbmails(removedIndex, removedNum);
|
||||
}
|
||||
|
||||
this.workspacesView.updateWorkspaces(oldNumWorkspaces,
|
||||
newNumWorkspaces,
|
||||
lostWorkspaces);
|
||||
newNumWorkspaces);
|
||||
},
|
||||
|
||||
_updateZoom : function() {
|
||||
|
Loading…
Reference in New Issue
Block a user