[gnome-control-center] keyboard: Simplify keyboard grab



commit a1f57ce50a9168ca97d07cfa1c41db509894c747
Author: Bastien Nocera <hadess hadess net>
Date:   Wed Jan 31 17:04:50 2018 +0100

    keyboard: Simplify keyboard grab
    
    https://bugzilla.gnome.org/show_bug.cgi?id=793070

 panels/keyboard/cc-keyboard-shortcut-editor.c |   34 +++++++-----------------
 1 files changed, 10 insertions(+), 24 deletions(-)
---
diff --git a/panels/keyboard/cc-keyboard-shortcut-editor.c b/panels/keyboard/cc-keyboard-shortcut-editor.c
index 24eacdf..22190a9 100644
--- a/panels/keyboard/cc-keyboard-shortcut-editor.c
+++ b/panels/keyboard/cc-keyboard-shortcut-editor.c
@@ -222,33 +222,15 @@ static void
 grab_seat (CcKeyboardShortcutEditor *self)
 {
   GdkGrabStatus status;
-  GdkDevice *pointer;
-  GdkDevice *device;
   GdkWindow *window;
-  GList *seats;
+  GdkSeat *seat;
 
   window = gtk_widget_get_window (GTK_WIDGET (self));
-  if (!window)
-    return;
-
-  seats = gdk_display_list_seats (gdk_window_get_display (window));
-  if (!seats)
-    return;
+  g_assert (window);
 
-  device = gdk_seat_get_keyboard (seats->data);
-  g_list_free (seats);
+  seat = gdk_display_get_default_seat (gdk_window_get_display (window));
 
-  if (!device) {
-    g_debug ("Keyboard grab unsuccessful, no keyboard in seat");
-    return;
-  }
-
-  if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
-    pointer = gdk_device_get_associated_device (device);
-  else
-    pointer = device;
-
-  status = gdk_seat_grab (gdk_device_get_seat (pointer),
+  status = gdk_seat_grab (seat,
                           window,
                           GDK_SEAT_CAPABILITY_KEYBOARD,
                           FALSE,
@@ -257,10 +239,14 @@ grab_seat (CcKeyboardShortcutEditor *self)
                           NULL,
                           NULL);
 
-  if (status != GDK_GRAB_SUCCESS)
+  if (status != GDK_GRAB_SUCCESS) {
+    g_warning ("Grabbing keyboard failed");
     return;
+  }
 
-  self->grab_pointer = pointer;
+  self->grab_pointer = gdk_seat_get_keyboard (seat);
+  if (!self->grab_pointer)
+    self->grab_pointer = gdk_seat_get_pointer (seat);
 
   gtk_grab_add (GTK_WIDGET (self));
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]