[mutter] wayland/pointer: Check for subsurfaces when grabbing
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] wayland/pointer: Check for subsurfaces when grabbing
- Date: Wed, 7 Jun 2017 01:53:17 +0000 (UTC)
commit 8457e2bad603f4b3fbbc2c8a0e94ba29825598d5
Author: mitchmindtree <mitchell nordine gmail com>
Date: Fri Jun 2 14:41:56 2017 +1000
wayland/pointer: Check for subsurfaces when grabbing
Previously, the function only returned `TRUE` if the given surface was
equal to the given pointer's focused surface. This changes the behaviour
to also return `TRUE` if any of the given surface's subsurfaces are
equal to the pointer's focused surface.
https://bugzilla.gnome.org/show_bug.cgi?id=781811.
src/wayland/meta-wayland-pointer.c | 22 +++++++++++++++++++++-
1 files changed, 21 insertions(+), 1 deletions(-)
---
diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c
index 0cd2883..15e27cd 100644
--- a/src/wayland/meta-wayland-pointer.c
+++ b/src/wayland/meta-wayland-pointer.c
@@ -1162,13 +1162,33 @@ meta_wayland_pointer_create_new_resource (MetaWaylandPointer *pointer,
}
}
+static gboolean
+pointer_can_grab_surface (MetaWaylandPointer *pointer,
+ MetaWaylandSurface *surface)
+{
+ GList *l;
+
+ if (pointer->focus_surface == surface)
+ return TRUE;
+
+ for (l = surface->subsurfaces; l; l = l->next)
+ {
+ MetaWaylandSurface *subsurface = l->data;
+
+ if (pointer_can_grab_surface (pointer, subsurface))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
gboolean
meta_wayland_pointer_can_grab_surface (MetaWaylandPointer *pointer,
MetaWaylandSurface *surface,
uint32_t serial)
{
return (pointer->grab_serial == serial &&
- pointer->focus_surface == surface);
+ pointer_can_grab_surface (pointer, surface));
}
gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]