tools: grab the pointer in the debug gui
authorPeter Hutterer <peter.hutterer@who-t.net>
Tue, 13 Jun 2017 05:18:56 +0000 (15:18 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 15 Jun 2017 07:46:51 +0000 (17:46 +1000)
Because it's too annoying to trigger the hot corner every few seconds while
pointer debugging.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
tools/libinput-debug-gui.1
tools/libinput-debug-gui.c

index 1d289fdb5ae2843fa9642944e6d9b51708914f84..e6d4d21fdb33be23d308d5bdf780235b2827c9ac 100644 (file)
@@ -8,7 +8,9 @@ libinput\-debug\-gui \- visual debug helper for libinput
 The
 .B "libinput debug\-gui"
 tool creates a libinput context and a full-screen GTK window to visualize
-events processed by libinput.
+events processed by libinput. This tool exclusively grabs pointing devices
+and stops them from interacting with the rest of the GUI.
+.B Hit Esc to exit this tool.
 .PP
 This is a debugging tool only, its output or behavior may change at any
 time. Do not rely on the output or the behavior.
index 4091b5569be60cd9cb213c9d13fc877354f3895f..ae1d2950cafa4f841232a89b358ada4e896db7d4 100644 (file)
@@ -383,6 +383,7 @@ map_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
 {
        struct window *w = data;
        GdkDisplay *display;
+       GdkSeat *seat;
        GdkWindow *window;
 
        gtk_window_get_size(GTK_WINDOW(widget), &w->width, &w->height);
@@ -410,6 +411,17 @@ map_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
        gdk_window_set_cursor(gtk_widget_get_window(w->win),
                              gdk_cursor_new_for_display(display,
                                                         GDK_BLANK_CURSOR));
+
+       seat = gdk_display_get_default_seat(display);
+       gdk_seat_grab(seat,
+                     window,
+                     GDK_SEAT_CAPABILITY_ALL_POINTING,
+                     FALSE, /* owner-events */
+                     NULL, /* cursor */
+                     NULL, /* triggering event */
+                     NULL, /* prepare_func */
+                     NULL /* prepare_func_data */
+                    );
 }
 
 static void