[gnome-shell] workspace: don't use multiple later calls to propagate actualGeometry calls



commit 727e4c0b377927d5d39b96a6d72163a8ed1ec92b
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Wed May 22 19:27:17 2013 +0200

    workspace: don't use multiple later calls to propagate actualGeometry calls
    
    Meta laters are invoked in reverse order of registration, so
    having multiple laters propagating the geometry cause all but the
    first one in the frame (which is usually wrong) to be ignored.
    Instead, queue at most one later call, and use the last set geometry
    in the callback.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=700853

 js/ui/workspace.js |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
---
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index bf5d277..7137504 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -989,10 +989,17 @@ const Workspace = new Lang.Class({
     setActualGeometry: function(geom) {
         this._actualGeometry = geom;
 
-        Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
+        if (this._actualGeometryLater)
+            return;
+
+        this._actualGeometryLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
+            let geom = this._actualGeometry;
+
             this._dropRect.set_position(geom.x, geom.y);
             this._dropRect.set_size(geom.width, geom.height);
             this._updateWindowPositions(WindowPositionFlags.NONE);
+
+            this._actualGeometryLater = 0;
             return false;
         }));
     },


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