From 96e14dcbe76cb2b7fc2dcb972a97575a7cb4a724 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 4 Sep 2017 14:37:45 +0800 Subject: [PATCH] boxpointer: If available, use source actor for constraining If a source actor is set, use that for determining the arrow side (i.e. whether the BoxPointer widget should expand in a certain direction). This is better because it ensures that the popup is displayed on the same monitor as the widget it originates from. Without this, entering text with a vertically aligned input method close to the bottom of a monitor would expand the BoxPointer downwards on the monitor beneath it, instead of upwards, which is what one would expect. https://bugzilla.gnome.org/show_bug.cgi?id=786886 --- js/ui/boxpointer.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js index 091ae157f..4527b4d9c 100644 --- a/js/ui/boxpointer.js +++ b/js/ui/boxpointer.js @@ -587,7 +587,10 @@ var BoxPointer = new Lang.Class({ _calculateArrowSide: function(arrowSide) { let sourceAllocation = Shell.util_get_transformed_allocation(this._sourceActor); let [minWidth, minHeight, boxWidth, boxHeight] = this._container.get_preferred_size(); - let monitor = Main.layoutManager.findMonitorForActor(this.actor); + let monitorActor = this.sourceActor; + if (!monitorActor) + monitorActor = this.actor; + let monitor = Main.layoutManager.findMonitorForActor(monitorActor); switch (arrowSide) { case St.Side.TOP: