aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2021-12-22 22:25:27 -0800
committerFurkan Sahin <furkan-dev@proton.me>2021-12-22 22:25:27 -0800
commitdd9a469544e1cba093205c88cb022a099077e9e6 (patch)
tree990e9d79c969d5bb192f34458e9e8e3c5b87bfd8
parent4de296c16c87abc05133c7b7b835b052febbd311 (diff)
xdg-shell: use toplevel geometry to adjust the popup box
`popup_unconstrain` uses view coordinates to init the output box for popups. However wlroots expects the box to be set in a toplevel surface coordinate system, which is not always equal to view. The difference between those is a window geometry set via xdg-shell. GTK4 reserves some space for client-side decoration and thus has a window with top left corner not matching to (0, 0) of a surface. The box calculated without taking that into account was slightly shifted compared to the actual output and allowed to position part of the popup off screen.
-rw-r--r--sway/desktop/xdg_shell.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c
index c1e5bc68..5fae8296 100644
--- a/sway/desktop/xdg_shell.c
+++ b/sway/desktop/xdg_shell.c
@@ -72,8 +72,8 @@ static void popup_unconstrain(struct sway_xdg_popup *popup) {
// the output box expressed in the coordinate system of the toplevel parent
// of the popup
struct wlr_box output_toplevel_sx_box = {
- .x = output->lx - view->container->pending.content_x,
- .y = output->ly - view->container->pending.content_y,
+ .x = output->lx - view->container->pending.content_x + view->geometry.x,
+ .y = output->ly - view->container->pending.content_y + view->geometry.y,
.width = output->width,
.height = output->height,
};