boxpointer: Fix positioning with non-widget sources

Commit 16d371873 lifted the requirement for source actors to be
widgets, then got it wrong :rolling_eyes:

The content box is expected to be in actor coordinates, so the
allocation must be translated to (0, 0).

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4593

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1969>
This commit is contained in:
Florian Müllner 2021-09-01 20:37:13 +02:00 committed by Marge Bot
parent bc09c1ca24
commit 0fd205ce54

View File

@ -467,7 +467,10 @@ var BoxPointer = GObject.registerClass({
const sourceAllocation = sourceActor.get_allocation_box();
const sourceContentBox = sourceActor instanceof St.Widget
? sourceActor.get_theme_node().get_content_box(sourceAllocation)
: sourceAllocation;
: new Clutter.ActorBox({
x2: sourceAllocation.get_width(),
y2: sourceAllocation.get_height(),
});
let sourceTopLeft = this._sourceExtents.get_top_left();
let sourceBottomRight = this._sourceExtents.get_bottom_right();
let sourceCenterX = sourceTopLeft.x + sourceContentBox.x1 + (sourceContentBox.x2 - sourceContentBox.x1) * this._sourceAlignment;