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
This commit is contained in:
parent
6ce470b9b2
commit
727e4c0b37
@ -989,10 +989,17 @@ const Workspace = new Lang.Class({
|
|||||||
setActualGeometry: function(geom) {
|
setActualGeometry: function(geom) {
|
||||||
this._actualGeometry = 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_position(geom.x, geom.y);
|
||||||
this._dropRect.set_size(geom.width, geom.height);
|
this._dropRect.set_size(geom.width, geom.height);
|
||||||
this._updateWindowPositions(WindowPositionFlags.NONE);
|
this._updateWindowPositions(WindowPositionFlags.NONE);
|
||||||
|
|
||||||
|
this._actualGeometryLater = 0;
|
||||||
return false;
|
return false;
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user