From 8eba75993240807c8bf4bbd814b302ad0cfb7432 Mon Sep 17 00:00:00 2001 From: Alexander Mikhaylenko Date: Sat, 20 Jun 2020 23:44:24 +0500 Subject: [PATCH] workspaceAnimation: Group sticky windows and moving window Since the transitions consists of window clones now, all the clones appear above sticky windows. Clone sticky windows as well, and treat them same as moving window instead. Part-of: --- js/ui/workspaceAnimation.js | 36 ++++++++---------------------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/js/ui/workspaceAnimation.js b/js/ui/workspaceAnimation.js index 4f89da464..a43a42e5c 100644 --- a/js/ui/workspaceAnimation.js +++ b/js/ui/workspaceAnimation.js @@ -37,6 +37,11 @@ class WorkspaceGroup extends Clutter.Actor { const isSticky = window.is_on_all_workspaces() || window === this._movingWindow; + // No workspace means we should show windows that are on all workspaces + if (!this._workspace) + return isSticky; + + // Otherwise only show windows that are (only) on that workspace return !isSticky && window.located_on_workspace(this._workspace); } @@ -155,8 +160,7 @@ var WorkspaceAnimationController = class { const switchData = {}; this._switchData = switchData; - switchData.movingWindowBin = new Clutter.Actor(); - switchData.movingWindow = null; + switchData.stickyGroup = new WorkspaceGroup(null, this.movingWindow); switchData.workspaceGroups = []; switchData.gestureActivated = false; switchData.inProgress = false; @@ -169,7 +173,7 @@ var WorkspaceAnimationController = class { Main.uiGroup.insert_child_above(switchData.backgroundGroup, global.window_group); Main.uiGroup.insert_child_above(switchData.container, switchData.backgroundGroup); - Main.uiGroup.insert_child_above(switchData.movingWindowBin, switchData.container); + Main.uiGroup.insert_child_above(switchData.stickyGroup, switchData.container); let x = 0; let y = 0; @@ -208,38 +212,14 @@ var WorkspaceAnimationController = class { switchData.container.y = -activeGroup.y; else switchData.container.x = -activeGroup.x; - - if (this.movingWindow) { - const windowActor = this.movingWindow.get_compositor_private(); - - switchData.movingWindow = { - windowActor, - parent: windowActor.get_parent(), - }; - - switchData.movingWindow.parent.remove_child(windowActor); - switchData.movingWindowBin.add_child(windowActor); - switchData.movingWindow.windowDestroyId = windowActor.connect('destroy', () => { - switchData.movingWindow = null; - }); - } } _finishWorkspaceSwitch(switchData) { this._switchData = null; - if (switchData.movingWindow) { - const record = switchData.movingWindow; - record.windowActor.disconnect(record.windowDestroyId); - switchData.movingWindowBin.remove_child(record.windowActor); - record.parent.add_child(record.windowActor); - - switchData.movingWindow = null; - } - switchData.backgroundGroup.destroy(); switchData.container.destroy(); - switchData.movingWindowBin.destroy(); + switchData.stickyGroup.destroy(); this.movingWindow = null; }