[mutter/wip/carlosg/im-events: 1/4] wayland: Avoid popup grab focus changes if there's an implicit grab
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/im-events: 1/4] wayland: Avoid popup grab focus changes if there's an implicit grab
- Date: Wed, 3 Jun 2020 10:35:37 +0000 (UTC)
commit 3b8ea9cf5a4b8d4305d9c3e6dd60fe3277f334ee
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed May 27 11:03:26 2020 +0200
wayland: Avoid popup grab focus changes if there's an implicit grab
Event delivery with grabbing popups stay essentially the same within
the grabbing client, we still must honor the implicit grab as long as
there is one.
This is however not the case, the popup_grab_focus() function ignores
the button state. The popup_grab_button() function will already indirectly
re-sync the focus surface after the last button is released, so checking
for button state in popup_grab_focus() is sufficient to make the implicit
grab honored with popup grabs involved.
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1275
src/wayland/meta-wayland-popup.c | 4 ++++
1 file changed, 4 insertions(+)
---
diff --git a/src/wayland/meta-wayland-popup.c b/src/wayland/meta-wayland-popup.c
index f628ef04c6..a4788615b0 100644
--- a/src/wayland/meta-wayland-popup.c
+++ b/src/wayland/meta-wayland-popup.c
@@ -102,6 +102,7 @@ popup_grab_focus (MetaWaylandPointerGrab *grab,
{
MetaWaylandPopupGrab *popup_grab = (MetaWaylandPopupGrab*)grab;
MetaWaylandSeat *seat = meta_wayland_pointer_get_seat (grab->pointer);
+ MetaWaylandPointer *pointer = grab->pointer;
/*
* We rely on having a pointer grab even when the seat doesn't have
@@ -112,6 +113,9 @@ 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 &&
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]