diff options
author | Aleksei Bavshin <alebastr89@gmail.com> | 2021-12-22 22:25:27 -0800 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2022-01-12 14:55:56 +0100 |
commit | aa443629b58e1d3d10cf64e689b661c076808d66 (patch) | |
tree | 990e9d79c969d5bb192f34458e9e8e3c5b87bfd8 /sway | |
parent | e1db1f8218998c428e8b087dda6660449ef2891a (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.
Diffstat (limited to 'sway')
-rw-r--r-- | sway/desktop/xdg_shell.c | 4 |
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, }; |