boxpointer: Trigger a relayout when setting position

Since the repositioning is now done during allocation, we can just queue
a relayout when setting the boxpointer positioning via the source actor.

As per this _relayout() and _updateFlip now needs to be called during allocation
only and with an allocation box set.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/576
This commit is contained in:
Marco Trevisan (Treviño) 2019-06-17 12:31:48 +02:00
parent 3d4ba028c4
commit cb4c0d32c0

View File

@ -455,10 +455,6 @@ var BoxPointer = GObject.registerClass({
} }
setPosition(sourceActor, alignment) { setPosition(sourceActor, alignment) {
// We need to show it now to force an allocation,
// so that we can query the correct size.
this.show();
if (!this._sourceActor || sourceActor != this._sourceActor) { if (!this._sourceActor || sourceActor != this._sourceActor) {
if (this._sourceActorDestroyId) { if (this._sourceActorDestroyId) {
this._sourceActor.disconnect(this._sourceActorDestroyId); this._sourceActor.disconnect(this._sourceActorDestroyId);
@ -474,13 +470,10 @@ var BoxPointer = GObject.registerClass({
}) })
} }
} }
this._arrowAlignment = alignment; this._arrowAlignment = alignment;
if (!this._sourceActor) this.queue_relayout();
return;
this._reposition();
this._updateFlip();
} }
setSourceAlignment(alignment) { setSourceAlignment(alignment) {
@ -605,14 +598,8 @@ var BoxPointer = GObject.registerClass({
parent = parent.get_parent(); parent = parent.get_parent();
} }
x = Math.floor(x);
y = Math.floor(y);
// Actually set the position // Actually set the position
if (!allocationBox) allocationBox.set_origin(Math.floor(x), Math.floor(y));
this.set_position(x, y);
else
allocationBox.set_origin(x, y);
} }
// @origin: Coordinate specifying middle of the arrow, along // @origin: Coordinate specifying middle of the arrow, along