[gnome-shell] workspace: don't use multiple later calls to propagate actualGeometry calls
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] workspace: don't use multiple later calls to propagate actualGeometry calls
- Date: Thu, 23 May 2013 16:11:01 +0000 (UTC)
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]