From cb4c0d32c060d0f5851327782f36aa60b2393153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Mon, 17 Jun 2019 12:31:48 +0200 Subject: [PATCH] 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 --- js/ui/boxpointer.js | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js index 2f4975a29..3c704d2d3 100644 --- a/js/ui/boxpointer.js +++ b/js/ui/boxpointer.js @@ -455,10 +455,6 @@ var BoxPointer = GObject.registerClass({ } 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._sourceActorDestroyId) { this._sourceActor.disconnect(this._sourceActorDestroyId); @@ -474,13 +470,10 @@ var BoxPointer = GObject.registerClass({ }) } } + this._arrowAlignment = alignment; - if (!this._sourceActor) - return; - - this._reposition(); - this._updateFlip(); + this.queue_relayout(); } setSourceAlignment(alignment) { @@ -605,14 +598,8 @@ var BoxPointer = GObject.registerClass({ parent = parent.get_parent(); } - x = Math.floor(x); - y = Math.floor(y); - // Actually set the position - if (!allocationBox) - this.set_position(x, y); - else - allocationBox.set_origin(x, y); + allocationBox.set_origin(Math.floor(x), Math.floor(y)); } // @origin: Coordinate specifying middle of the arrow, along