diff --git a/src/wayland/meta-wayland-data-device.c b/src/wayland/meta-wayland-data-device.c index 14fd5bfc9..478d1c4c5 100644 --- a/src/wayland/meta-wayland-data-device.c +++ b/src/wayland/meta-wayland-data-device.c @@ -1195,9 +1195,12 @@ data_device_start_drag (struct wl_client *client, &drag_grab_interface, surface, drag_source, icon_surface); - meta_wayland_keyboard_set_focus (seat->keyboard, NULL); - meta_wayland_keyboard_start_grab (seat->keyboard, - &seat->data_device.current_grab->keyboard_grab); + if (meta_wayland_seat_has_keyboard (seat)) + { + meta_wayland_keyboard_set_focus (seat->keyboard, NULL); + meta_wayland_keyboard_start_grab (seat->keyboard, + &seat->data_device.current_grab->keyboard_grab); + } } static void diff --git a/src/wayland/meta-wayland-keyboard.c b/src/wayland/meta-wayland-keyboard.c index 56e9576c1..4998cea4d 100644 --- a/src/wayland/meta-wayland-keyboard.c +++ b/src/wayland/meta-wayland-keyboard.c @@ -825,10 +825,6 @@ meta_wayland_keyboard_set_focus (MetaWaylandKeyboard *keyboard, MetaWaylandSurface *surface) { MetaWaylandInputDevice *input_device = META_WAYLAND_INPUT_DEVICE (keyboard); - MetaWaylandSeat *seat = meta_wayland_input_device_get_seat (input_device); - - if (!meta_wayland_seat_has_keyboard (seat)) - return; if (keyboard->focus_surface == surface) return; diff --git a/src/wayland/meta-wayland-popup.c b/src/wayland/meta-wayland-popup.c index 77860d486..c89b878d7 100644 --- a/src/wayland/meta-wayland-popup.c +++ b/src/wayland/meta-wayland-popup.c @@ -249,12 +249,12 @@ meta_wayland_popup_dismiss (MetaWaylandPopup *popup) { MetaWaylandSurface *top_popup_surface; MetaWaylandSeat *seat; - MetaWaylandKeyboard *keyboard; top_popup_surface = meta_wayland_popup_grab_get_top_popup (popup_grab); seat = meta_wayland_pointer_get_seat (popup_grab->generic.pointer); - keyboard = seat->keyboard; - meta_wayland_keyboard_set_focus (keyboard, top_popup_surface); + + if (meta_wayland_seat_has_keyboard (seat)) + meta_wayland_keyboard_set_focus (seat->keyboard, top_popup_surface); } } @@ -272,7 +272,6 @@ meta_wayland_popup_create (MetaWaylandPopupSurface *popup_surface, meta_wayland_popup_surface_get_surface (popup_surface); MetaWaylandPopup *popup; MetaWaylandSeat *seat; - MetaWaylandKeyboard *keyboard; /* Don't allow creating popups if the grab has a different client. */ if (grab->grab_client != wl_resource_get_client (surface->resource)) @@ -285,8 +284,8 @@ meta_wayland_popup_create (MetaWaylandPopupSurface *popup_surface, wl_list_insert (&grab->all_popups, &popup->link); seat = meta_wayland_pointer_get_seat (grab->generic.pointer); - keyboard = seat->keyboard; - meta_wayland_keyboard_set_focus (keyboard, surface); + if (meta_wayland_seat_has_keyboard (seat)) + meta_wayland_keyboard_set_focus (seat->keyboard, surface); return popup; }