cursor: cancel popup grab on mouse-press outside client itself

...for example on any part of the server side decoration

Supercedes #826 for xdg-shell popups

Helped-by: @Consolatis
This commit is contained in:
Johan Malm 2023-08-09 16:58:18 +01:00 committed by Johan Malm
parent e39744f1d3
commit 3111c57d6f

View file

@ -923,8 +923,15 @@ cursor_button_press(struct seat *seat, struct wlr_pointer_button_event *event)
} }
} }
if (ctx.type == LAB_SSD_ROOT && wlr_seat_pointer_has_grab(seat->seat)) { if (ctx.type != LAB_SSD_CLIENT && wlr_seat_pointer_has_grab(seat->seat)) {
/* Let a click on the desktop cancel an active popup grab */ /*
* If we have an active popup grab (an open popup) we want to
* cancel that grab whenever the user presses on anything that
* is not the client itself, for example the desktop or any
* part of the server side decoration.
*
* Note: This does not work for XWayland clients
*/
wlr_seat_pointer_end_grab(seat->seat); wlr_seat_pointer_end_grab(seat->seat);
return; return;
} }