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;