[gnome-shell/wip/exalm/gestures2: 4/5] workspaceAnimation: Group sticky windows and moving window



commit 7521476bb79841ea7d773d1e65af223d1c9fc398
Author: Alexander Mikhaylenko <exalm7659 gmail com>
Date:   Sat Jun 20 23:44:24 2020 +0500

    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.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1326

 js/ui/workspaceAnimation.js | 35 +++++++----------------------------
 1 file changed, 7 insertions(+), 28 deletions(-)
---
diff --git a/js/ui/workspaceAnimation.js b/js/ui/workspaceAnimation.js
index 6dee3e28eb..19abb96f16 100644
--- a/js/ui/workspaceAnimation.js
+++ b/js/ui/workspaceAnimation.js
@@ -37,6 +37,10 @@ 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);
     }
@@ -156,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;
@@ -170,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;
@@ -209,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;
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]