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().
This commit is contained in:
@ -629,33 +629,15 @@ find_toplevel_under_pointer (GdkDisplay *display,
|
|||||||
static GdkWindow *
|
static GdkWindow *
|
||||||
find_toplevel_for_keyboard_event (NSEvent *nsevent)
|
find_toplevel_for_keyboard_event (NSEvent *nsevent)
|
||||||
{
|
{
|
||||||
GList *list, *l;
|
GdkQuartzView *view = (GdkQuartzView *)[[nsevent window] contentView];
|
||||||
GdkWindow *window;
|
GdkWindow *window = [view gdkWindow];
|
||||||
GdkDisplay *display;
|
GdkDisplay *display = gdk_window_get_display (window);
|
||||||
GdkQuartzView *view;
|
GdkSeat *seat = gdk_display_get_default_seat (display);
|
||||||
GdkSeat *seat;
|
GdkDevice *device = gdk_seat_get_keyboard (seat);
|
||||||
|
GdkDeviceGrabInfo *grab = _gdk_display_get_last_device_grab (display, device);
|
||||||
|
|
||||||
view = (GdkQuartzView *)[[nsevent window] contentView];
|
if (grab && grab->window && !grab->owner_events)
|
||||||
window = [view gdkWindow];
|
window = gdk_window_get_effective_toplevel (grab->window);
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
g_list_free (list);
|
|
||||||
|
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user