workspaceAnimation: Only create moving window bin when needed
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605
This commit is contained in:
parent
eeac4a3b6d
commit
f0d498062d
@ -101,7 +101,6 @@ const WorkspaceAnimation = GObject.registerClass({
|
|||||||
this.connect('destroy', this._onDestroy.bind(this));
|
this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
this._controller = controller;
|
this._controller = controller;
|
||||||
this._movingWindowBin = new Clutter.Actor();
|
|
||||||
this._movingWindow = null;
|
this._movingWindow = null;
|
||||||
this._surroundings = {};
|
this._surroundings = {};
|
||||||
this._progress = 0;
|
this._progress = 0;
|
||||||
@ -110,7 +109,6 @@ const WorkspaceAnimation = GObject.registerClass({
|
|||||||
|
|
||||||
this.add_actor(this._container);
|
this.add_actor(this._container);
|
||||||
global.window_group.add_actor(this);
|
global.window_group.add_actor(this);
|
||||||
global.window_group.add_actor(this._movingWindowBin);
|
|
||||||
|
|
||||||
let workspaceManager = global.workspace_manager;
|
let workspaceManager = global.workspace_manager;
|
||||||
let curWs = workspaceManager.get_workspace_by_index(from);
|
let curWs = workspaceManager.get_workspace_by_index(from);
|
||||||
@ -145,21 +143,24 @@ const WorkspaceAnimation = GObject.registerClass({
|
|||||||
info.actor.set_position(x, y);
|
info.actor.set_position(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
global.window_group.set_child_above_sibling(this._movingWindowBin, null);
|
|
||||||
|
|
||||||
if (this._controller.movingWindow) {
|
if (this._controller.movingWindow) {
|
||||||
let actor = this._controller.movingWindow.get_compositor_private();
|
let actor = this._controller.movingWindow.get_compositor_private();
|
||||||
|
let container = new Clutter.Actor();
|
||||||
|
|
||||||
this._movingWindow = {
|
this._movingWindow = {
|
||||||
|
container,
|
||||||
window: actor,
|
window: actor,
|
||||||
parent: actor.get_parent(),
|
parent: actor.get_parent(),
|
||||||
};
|
};
|
||||||
|
|
||||||
this._movingWindow.parent.remove_child(actor);
|
this._movingWindow.parent.remove_child(actor);
|
||||||
this._movingWindowBin.add_child(actor);
|
this._movingWindow.container.add_child(actor);
|
||||||
this._movingWindow.windowDestroyId = actor.connect('destroy', () => {
|
this._movingWindow.windowDestroyId = actor.connect('destroy', () => {
|
||||||
this._movingWindow = null;
|
this._movingWindow = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
global.window_group.add_actor(container);
|
||||||
|
global.window_group.set_child_above_sibling(container, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,11 +170,10 @@ const WorkspaceAnimation = GObject.registerClass({
|
|||||||
record.window.disconnect(record.windowDestroyId);
|
record.window.disconnect(record.windowDestroyId);
|
||||||
record.window.get_parent().remove_child(record.window);
|
record.window.get_parent().remove_child(record.window);
|
||||||
record.parent.add_child(record.window);
|
record.parent.add_child(record.window);
|
||||||
|
record.container.destroy();
|
||||||
|
|
||||||
this._movingWindow = null;
|
this._movingWindow = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._movingWindowBin.destroy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_getPositionForDirection(direction, fromWs, toWs) {
|
_getPositionForDirection(direction, fromWs, toWs) {
|
||||||
|
Loading…
Reference in New Issue
Block a user