cursor: prevent press on layer-subsurface from cancelling popup grab

Fixes: #1030
This commit is contained in:
Johan Malm 2023-08-14 23:38:55 +01:00 committed by Johan Malm
parent be1ef03412
commit a89bcc3c60
3 changed files with 7 additions and 1 deletions

View file

@ -36,6 +36,7 @@ enum ssd_part_type {
LAB_SSD_MENU, LAB_SSD_MENU,
LAB_SSD_OSD, LAB_SSD_OSD,
LAB_SSD_LAYER_SURFACE, LAB_SSD_LAYER_SURFACE,
LAB_SSD_LAYER_SUBSURFACE,
LAB_SSD_UNMANAGED, LAB_SSD_UNMANAGED,
LAB_SSD_END_MARKER LAB_SSD_END_MARKER
}; };

View file

@ -922,8 +922,12 @@ cursor_button_press(struct seat *seat, struct wlr_pointer_button_event *event)
seat_set_focus_layer(seat, layer); seat_set_focus_layer(seat, layer);
} }
} }
if (ctx.type == LAB_SSD_LAYER_SUBSURFACE) {
seat_focus_surface(seat, ctx.surface);
}
if (ctx.type != LAB_SSD_CLIENT && wlr_seat_pointer_has_grab(seat->seat)) { if (ctx.type != LAB_SSD_CLIENT && ctx.type != LAB_SSD_LAYER_SUBSURFACE
&& wlr_seat_pointer_has_grab(seat->seat)) {
/* /*
* If we have an active popup grab (an open popup) we want to * If we have an active popup grab (an open popup) we want to
* cancel that grab whenever the user presses on anything that * cancel that grab whenever the user presses on anything that

View file

@ -423,6 +423,7 @@ get_cursor_context(struct server *server)
* setting the margin with the pointer. * setting the margin with the pointer.
*/ */
ret.surface = surface; ret.surface = surface;
ret.type = LAB_SSD_LAYER_SUBSURFACE;
return ret; return ret;
} }
} }