wayland/data-device: Restore keyboard focus on drag end

When starting a DnD operation, mutter would remove keyboard focus from
the client, only to restore it on the data offer destroy.

However, if the DnD fail, the keyboard focus is not restored, leaving
the user unable to type in the focused window, even after clicking in
the window.

That issue would show only on first attempt, as further DnD attempts
would destroy the previous data offer which would also restore the
keyboard focus.

Make sure we restore the keyboard focus on drag end as well.

https://gitlab.gnome.org/GNOME/mutter/issues/747
This commit is contained in:
Olivier Fourdan 2019-09-02 15:47:58 +02:00 committed by Jonas Ådahl
parent 82c92177ff
commit de98fb29da

View File

@ -977,6 +977,7 @@ data_device_end_drag_grab (MetaWaylandDragGrab *drag_grab)
{ {
meta_wayland_pointer_end_grab (drag_grab->generic.pointer); meta_wayland_pointer_end_grab (drag_grab->generic.pointer);
meta_wayland_keyboard_end_grab (drag_grab->keyboard_grab.keyboard); meta_wayland_keyboard_end_grab (drag_grab->keyboard_grab.keyboard);
meta_display_sync_wayland_input_focus (meta_get_display ());
} }
g_slice_free (MetaWaylandDragGrab, drag_grab); g_slice_free (MetaWaylandDragGrab, drag_grab);