From fcdda41def19bb474f6f84f4fcea99335cc5ddb3 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 3 Jun 2021 16:25:13 +0200 Subject: [PATCH] wayland: Make implicit grabs during popups be owner_events=TRUE Getting crossing events is necessary between client surfaces while there is a popup grab in effect (e.g. allow press-drag-release in menus), we should only stick with the focus surface while the pointer is outside any client surface. This partially undoes commit 79050004b06 (or, at least, mutter no longer fixes the bug it claimed to fix). This will be addressed in gtk4. Part-of: --- src/wayland/meta-wayland-popup.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/wayland/meta-wayland-popup.c b/src/wayland/meta-wayland-popup.c index 23b26cc43..995d5f967 100644 --- a/src/wayland/meta-wayland-popup.c +++ b/src/wayland/meta-wayland-popup.c @@ -113,15 +113,12 @@ popup_grab_focus (MetaWaylandPointerGrab *grab, if (!meta_wayland_seat_has_pointer (seat)) return; - if (pointer->button_count > 0) - return; - /* Popup grabs are in owner-events mode (ie, events for the same client are reported as normal) */ if (surface && wl_resource_get_client (surface->resource) == popup_grab->grab_client) meta_wayland_pointer_set_focus (grab->pointer, surface); - else + else if (pointer->button_count == 0) meta_wayland_pointer_set_focus (grab->pointer, NULL); }