[gnome-shell/wip/exalm/gestures: 4/6] workspaceAnimation: Only create moving window bin when needed



commit dc0186de780df1f649621f429dd07b4835b610a3
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Fri Jul 5 15:48:38 2019 +0500

    workspaceAnimation: Only create moving window bin when needed
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605

 js/ui/workspaceAnimation.js | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)
---
diff --git a/js/ui/workspaceAnimation.js b/js/ui/workspaceAnimation.js
index 6a66646499..9e9fad1391 100644
--- a/js/ui/workspaceAnimation.js
+++ b/js/ui/workspaceAnimation.js
@@ -99,7 +99,6 @@ var WorkspaceAnimation = GObject.registerClass({
         this.connect('destroy', this._onDestroy.bind(this));
 
         this._controller = controller;
-        this._movingWindowBin = new Clutter.Actor();
         this._movingWindow = null;
         this._surroundings = {};
         this._progress = 0;
@@ -108,7 +107,6 @@ var WorkspaceAnimation = GObject.registerClass({
 
         this.add_actor(this._container);
         global.window_group.add_actor(this);
-        global.window_group.add_actor(this._movingWindowBin);
 
         let workspaceManager = global.workspace_manager;
         let curWs = workspaceManager.get_workspace_by_index(from);
@@ -141,19 +139,22 @@ var WorkspaceAnimation = GObject.registerClass({
             info.actor.set_position(x, y);
         }
 
-        global.window_group.set_child_above_sibling(this._movingWindowBin, null);
-
         if (this._controller.movingWindow) {
             let actor = this._controller.movingWindow.get_compositor_private();
+            let container = new Clutter.Actor();
 
-            this._movingWindow = { window: actor,
+            this._movingWindow = { container,
+                                   window: actor,
                                    parent: actor.get_parent() };
 
             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 = null;
             });
+
+            global.window_group.add_actor(container);
+            global.window_group.set_child_above_sibling(container, null);
         }
     }
 
@@ -165,12 +166,12 @@ var WorkspaceAnimation = GObject.registerClass({
             record.window.disconnect(record.windowDestroyId);
             record.window.get_parent().remove_child(record.window);
             record.parent.add_child(record.window);
+            record.container.destroy();
 
             this._movingWindow = null;
         }
 
         this._container.destroy();
-        this._movingWindowBin.destroy();
     }
 
     _getPositionForDirection(direction, fromWs, toWs) {


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