From 91ae83fa5dce263b568909cbe143fa4f833057c8 Mon Sep 17 00:00:00 2001 From: infirit Date: Sun, 23 Nov 2014 07:40:19 +0100 Subject: Gtk3: Port gdk_keyboard_grab to gdk_device Based on gnome-panel commits: menu: 434e491bc4a280037638fb828529856276de3512 toplevel: e0bf14009416f19484bd0431a85744db7d907eb9 force-quit: 2760d89026ea5cf5bf25a4b8ceaf9f6dd2651043 --- mate-panel/menu.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'mate-panel/menu.c') diff --git a/mate-panel/menu.c b/mate-panel/menu.c index f92dbeaa..c9e0bcf6 100644 --- a/mate-panel/menu.c +++ b/mate-panel/menu.c @@ -690,6 +690,7 @@ drag_end_menu_cb (GtkWidget *widget, GdkDragContext *context) gboolean status; GdkDisplay *display; GdkDevice *pointer; + GdkDevice *keyboard; GdkDeviceManager *device_manager; #endif GdkWindow *window = gtk_widget_get_window (xgrab_shell); @@ -698,10 +699,12 @@ drag_end_menu_cb (GtkWidget *widget, GdkDragContext *context) #if GTK_CHECK_VERSION (3, 0, 0) display = gdk_window_get_display (window); device_manager = gdk_display_get_device_manager (display); + keyboard = gdk_device_get_associated_device (pointer); pointer = gdk_device_manager_get_client_pointer (device_manager); /* FIXMEgpoo: Not sure if report to GDK_OWNERSHIP_WINDOW - or GDK_OWNERSHIP_APPLICATION */ + or GDK_OWNERSHIP_APPLICATION Idem for the + keyboard below */ status = gdk_device_grab (pointer, window, GDK_OWNERSHIP_WINDOW, TRUE, GDK_BUTTON_PRESS_MASK @@ -712,17 +715,23 @@ drag_end_menu_cb (GtkWidget *widget, GdkDragContext *context) cursor, GDK_CURRENT_TIME); if (!status) + { + if (gdk_device_grab (keyboard, window, + GDK_OWNERSHIP_WINDOW, TRUE, + GDK_KEY_PRESS | GDK_KEY_RELEASE, + NULL, GDK_CURRENT_TIME) == GDK_GRAB_SUCCESS) + { #else if ((gdk_pointer_grab (window, TRUE, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK, NULL, cursor, GDK_CURRENT_TIME) == 0)) -#endif { if (gdk_keyboard_grab (window, TRUE, GDK_CURRENT_TIME) == 0) { +#endif /* FIXME fix for GTK3 */ #if !GTK_CHECK_VERSION (3, 0, 0) GTK_MENU_SHELL (xgrab_shell)->have_xgrab = TRUE; -- cgit v1.2.1