[gtk/gtk-3-24] Don't scan the seat's slave list for keyboards.



commit 28848176e542841bf36d3f18ee5eea69a84bdf85
Author: John Ralls <jralls ceridwen us>
Date:   Mon Mar 11 14:35:05 2019 -0700

    Don't scan the seat's slave list for keyboards.
    
    There aren't any, just the master_keyboard which one accesses with
    gdk_seat_get_keyboard().

 gdk/quartz/gdkevents-quartz.c | 34 ++++++++--------------------------
 1 file changed, 8 insertions(+), 26 deletions(-)
---
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
index 9d3d5bad58..83c1232b83 100644
--- a/gdk/quartz/gdkevents-quartz.c
+++ b/gdk/quartz/gdkevents-quartz.c
@@ -629,33 +629,15 @@ find_toplevel_under_pointer (GdkDisplay *display,
 static GdkWindow *
 find_toplevel_for_keyboard_event (NSEvent *nsevent)
 {
-  GList *list, *l;
-  GdkWindow *window;
-  GdkDisplay *display;
-  GdkQuartzView *view;
-  GdkSeat *seat;
-
-  view = (GdkQuartzView *)[[nsevent window] contentView];
-  window = [view gdkWindow];
-
-  display = gdk_window_get_display (window);
-  seat = gdk_display_get_default_seat (display);
-
-  list = gdk_seat_get_slaves (seat, GDK_SEAT_CAPABILITY_KEYBOARD);
-  for (l = list; l; l = l->next)
-    {
-      GdkDeviceGrabInfo *grab;
-      GdkDevice *device = l->data;
-
-      grab = _gdk_display_get_last_device_grab (display, device);
-      if (grab && grab->window && !grab->owner_events)
-        {
-          window = gdk_window_get_effective_toplevel (grab->window);
-          break;
-        }
-    }
+  GdkQuartzView *view = (GdkQuartzView *)[[nsevent window] contentView];
+  GdkWindow *window  = [view gdkWindow];
+  GdkDisplay *display = gdk_window_get_display (window);
+  GdkSeat *seat = gdk_display_get_default_seat (display);
+  GdkDevice *device = gdk_seat_get_keyboard (seat);
+  GdkDeviceGrabInfo *grab = _gdk_display_get_last_device_grab (display, device);
 
-  g_list_free (list);
+  if (grab && grab->window && !grab->owner_events)
+    window = gdk_window_get_effective_toplevel (grab->window);
 
   return window;
 }


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