diff options
-rw-r--r-- | gdk/gdk.c | 3 | ||||
-rw-r--r-- | gdk/gdkinternals.h | 3 | ||||
-rw-r--r-- | gdk/x11/gdkinput-xfree.c | 14 | ||||
-rw-r--r-- | gdk/x11/gdkmain-x11.c | 52 |
4 files changed, 40 insertions, 32 deletions
@@ -67,7 +67,8 @@ static const GDebugKey gdk_debug_keys[] = { {"events", GDK_DEBUG_EVENTS}, {"misc", GDK_DEBUG_MISC}, {"dnd", GDK_DEBUG_DND}, - {"xim", GDK_DEBUG_XIM} + {"xim", GDK_DEBUG_XIM}, + {"nograbs", GDK_DEBUG_NOGRABS}, }; static const int gdk_ndebug_keys = sizeof(gdk_debug_keys)/sizeof(GDebugKey); diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index 8a70873f18..aa557abd56 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -67,7 +67,8 @@ typedef enum { GDK_DEBUG_MISC = 1 << 0, GDK_DEBUG_EVENTS = 1 << 1, GDK_DEBUG_DND = 1 << 2, - GDK_DEBUG_XIM = 1 << 3 + GDK_DEBUG_XIM = 1 << 3, + GDK_DEBUG_NOGRABS = 1 << 4, } GdkDebugFlag; #ifndef GDK_DISABLE_DEPRECATED diff --git a/gdk/x11/gdkinput-xfree.c b/gdk/x11/gdkinput-xfree.c index fe7cafdebc..48b0784c63 100644 --- a/gdk/x11/gdkinput-xfree.c +++ b/gdk/x11/gdkinput-xfree.c @@ -277,11 +277,15 @@ _gdk_input_grab_pointer (GdkWindow * window, gdk_input_common_find_events (window, gdkdev, event_mask, event_classes, &num_classes); - - result = XGrabDevice( GDK_DISPLAY(), gdkdev->xdevice, - GDK_WINDOW_XWINDOW (window), - owner_events, num_classes, event_classes, - GrabModeAsync, GrabModeAsync, time); +#ifdef G_ENABLE_DEBUG + if (_gdk_debug_flags & GDK_DEBUG_NOGRABS) + result = GrabSuccess; + else +#endif + result = XGrabDevice( GDK_DISPLAY(), gdkdev->xdevice, + GDK_WINDOW_XWINDOW (window), + owner_events, num_classes, event_classes, + GrabModeAsync, GrabModeAsync, time); /* FIXME: if failure occurs on something other than the first device, things will be badly inconsistent */ diff --git a/gdk/x11/gdkmain-x11.c b/gdk/x11/gdkmain-x11.c index 4dce680fa1..fe7663f844 100644 --- a/gdk/x11/gdkmain-x11.c +++ b/gdk/x11/gdkmain-x11.c @@ -90,18 +90,6 @@ static int gdk_initialized = 0; /* 1 if the library is initialized, static gint autorepeat; static gboolean gdk_synchronize = FALSE; -#ifdef G_ENABLE_DEBUG -static const GDebugKey gdk_debug_keys[] = { - {"events", GDK_DEBUG_EVENTS}, - {"misc", GDK_DEBUG_MISC}, - {"dnd", GDK_DEBUG_DND}, - {"xim", GDK_DEBUG_XIM} -}; - -static const int gdk_ndebug_keys = sizeof(gdk_debug_keys)/sizeof(GDebugKey); - -#endif /* G_ENABLE_DEBUG */ - GdkArgDesc _gdk_windowing_args[] = { { "display", GDK_ARG_STRING, &_gdk_display_name, (GdkArgFunc)NULL }, { "sync", GDK_ARG_BOOL, &gdk_synchronize, (GdkArgFunc)NULL }, @@ -298,14 +286,21 @@ gdk_pointer_grab (GdkWindow * window, if (return_val == GrabSuccess) { if (!GDK_WINDOW_DESTROYED (window)) - return_val = XGrabPointer (GDK_WINDOW_XDISPLAY (window), - xwindow, - owner_events, - xevent_mask, - GrabModeAsync, GrabModeAsync, - xconfine_to, - xcursor, - time); + { +#ifdef G_ENABLE_DEBUG + if (_gdk_debug_flags & GDK_DEBUG_NOGRABS) + return_val = GrabSuccess; + else +#endif + return_val = XGrabPointer (GDK_WINDOW_XDISPLAY (window), + xwindow, + owner_events, + xevent_mask, + GrabModeAsync, GrabModeAsync, + xconfine_to, + xcursor, + time); + } else return_val = AlreadyGrabbed; } @@ -392,11 +387,18 @@ gdk_keyboard_grab (GdkWindow * window, g_return_val_if_fail (GDK_IS_WINDOW (window), 0); if (!GDK_WINDOW_DESTROYED (window)) - return_val = XGrabKeyboard (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - owner_events, - GrabModeAsync, GrabModeAsync, - time); + { +#ifdef G_ENABLE_DEBUG + if (_gdk_debug_flags & GDK_DEBUG_NOGRABS) + return_val = GrabSuccess; + else +#endif + return_val = XGrabKeyboard (GDK_WINDOW_XDISPLAY (window), + GDK_WINDOW_XID (window), + owner_events, + GrabModeAsync, GrabModeAsync, + time); + } else return_val = AlreadyGrabbed; |