keyboard: Simplify keyboard grab
https://bugzilla.gnome.org/show_bug.cgi?id=793070
This commit is contained in:
parent
6b043fd3dd
commit
a1f57ce50a
1 changed files with 10 additions and 24 deletions
|
@ -222,33 +222,15 @@ static void
|
||||||
grab_seat (CcKeyboardShortcutEditor *self)
|
grab_seat (CcKeyboardShortcutEditor *self)
|
||||||
{
|
{
|
||||||
GdkGrabStatus status;
|
GdkGrabStatus status;
|
||||||
GdkDevice *pointer;
|
|
||||||
GdkDevice *device;
|
|
||||||
GdkWindow *window;
|
GdkWindow *window;
|
||||||
GList *seats;
|
GdkSeat *seat;
|
||||||
|
|
||||||
window = gtk_widget_get_window (GTK_WIDGET (self));
|
window = gtk_widget_get_window (GTK_WIDGET (self));
|
||||||
if (!window)
|
g_assert (window);
|
||||||
return;
|
|
||||||
|
|
||||||
seats = gdk_display_list_seats (gdk_window_get_display (window));
|
seat = gdk_display_get_default_seat (gdk_window_get_display (window));
|
||||||
if (!seats)
|
|
||||||
return;
|
|
||||||
|
|
||||||
device = gdk_seat_get_keyboard (seats->data);
|
status = gdk_seat_grab (seat,
|
||||||
g_list_free (seats);
|
|
||||||
|
|
||||||
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),
|
|
||||||
window,
|
window,
|
||||||
GDK_SEAT_CAPABILITY_KEYBOARD,
|
GDK_SEAT_CAPABILITY_KEYBOARD,
|
||||||
FALSE,
|
FALSE,
|
||||||
|
@ -257,10 +239,14 @@ grab_seat (CcKeyboardShortcutEditor *self)
|
||||||
NULL,
|
NULL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (status != GDK_GRAB_SUCCESS)
|
if (status != GDK_GRAB_SUCCESS) {
|
||||||
|
g_warning ("Grabbing keyboard failed");
|
||||||
return;
|
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));
|
gtk_grab_add (GTK_WIDGET (self));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue