- gdk_display_keyboard_ungrab (gtk_widget_get_display (widget),
- gdk_event_get_time (event));
+ keyb = device;
+ pointer = gdk_device_get_associated_device (device);
+ }
+ else
+ {
+ pointer = device;
+ keyb = gdk_device_get_associated_device (device);
+ }
+
+ time = gdk_event_get_time (event);
+
+ if (gdk_device_grab (keyb, window,
+ GDK_OWNERSHIP_WINDOW, FALSE,
+ GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK,
+ NULL, time) != GDK_GRAB_SUCCESS)
+ return NULL;
+
+ if (gdk_device_grab (pointer, window,
+ GDK_OWNERSHIP_WINDOW, FALSE,
+ GDK_BUTTON_PRESS_MASK,
+ NULL, time) != GDK_GRAB_SUCCESS)
+ {
+ gdk_device_ungrab (keyb, time);