[gnome-shell] windowManager: Generalize translation values



commit 0dca5e513b521edfc40842478bb34969b60478b1
Author: Alessandro Bono <abono gnome org>
Date:   Sat May 20 16:34:35 2017 +0200

    windowManager: Generalize translation values
    
    Currently, the translation values are set with the assumption that
    one of the actors represents a fullscreen window. In order to
    generalize it for any size change transition, we can simply swap
    the monitor rect with the source or target rect as appropriate,
    and translate the actor from the target to the source position by
    subtracting the former and adding the latter.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=766685

 js/ui/windowManager.js |   14 +++-----------
 1 files changed, 3 insertions(+), 11 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index b987467..8b5c461 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -1331,13 +1331,11 @@ const WindowManager = new Lang.Class({
         actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
         Main.uiGroup.add_actor(actorClone);
 
-        let rect = change == Meta.SizeChange.FULLSCREEN ? oldFrameRect : null;
-
         if (this._clearFullscreenInfo(actor))
             this._shellwm.completed_size_change(actor);
 
         actor.__fullscreenInfo = { clone: actorClone,
-                                   oldRect: rect };
+                                   oldRect: oldFrameRect };
     },
 
     _sizeChangedWindow: function(shellwm, actor) {
@@ -1365,15 +1363,9 @@ const WindowManager = new Lang.Class({
                            transition: 'easeOutQuad'
                          });
 
-        let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
         let sourceRect = actor.__fullscreenInfo.oldRect;
-        if (sourceRect) {
-            actor.translation_x = sourceRect.x - monitor.x;
-            actor.translation_y = sourceRect.y - monitor.y;
-        } else {
-            actor.translation_x = -(targetRect.x - monitor.x);
-            actor.translation_y = -(targetRect.y - monitor.y);
-        }
+        actor.translation_x = -targetRect.x + sourceRect.x;
+        actor.translation_y = -targetRect.y + sourceRect.y;
 
         // Now set scale the actor to size it as the clone.
         actor.scale_x = 1 / scaleX;


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