From 727e4c0b377927d5d39b96a6d72163a8ed1ec92b Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Wed, 22 May 2013 19:27:17 +0200 Subject: [PATCH] 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 file changed, 8 insertions(+), 1 deletion(-) diff --git a/js/ui/workspace.js b/js/ui/workspace.js index bf5d277cf..713750423 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; })); },