compositor: add a way to override the default pointer grab
diff --git a/src/input.c b/src/input.c
index d7b4b13..159049e 100644
--- a/src/input.c
+++ b/src/input.c
@@ -381,7 +381,7 @@
}
WL_EXPORT struct weston_pointer *
-weston_pointer_create(void)
+weston_pointer_create(struct weston_seat *seat)
{
struct weston_pointer *pointer;
@@ -391,7 +391,8 @@
wl_list_init(&pointer->resource_list);
wl_list_init(&pointer->focus_resource_list);
- pointer->default_grab.interface = &default_pointer_grab_interface;
+ weston_pointer_set_default_grab(pointer,
+ seat->compositor->default_pointer_grab);
pointer->default_grab.pointer = pointer;
pointer->grab = &pointer->default_grab;
wl_signal_init(&pointer->focus_signal);
@@ -417,6 +418,17 @@
free(pointer);
}
+void
+weston_pointer_set_default_grab(struct weston_pointer *pointer,
+ const struct weston_pointer_grab_interface *interface)
+{
+ if (interface)
+ pointer->default_grab.interface = interface;
+ else
+ pointer->default_grab.interface =
+ &default_pointer_grab_interface;
+}
+
WL_EXPORT struct weston_keyboard *
weston_keyboard_create(void)
{
@@ -1839,7 +1851,7 @@
return;
}
- pointer = weston_pointer_create();
+ pointer = weston_pointer_create(seat);
if (pointer == NULL)
return;