Commit 9e07d25a authored by Olivier Fourdan's avatar Olivier Fourdan Committed by Daniel Stone

xwm: Don't change focus on focus events from grabs

xwm would not let X clients change the focus behind the compositor's
back, reverting focus where it's supposed to be when this occurs.

However, X11 grab also issue focus in events, on which some clients
rely and reverting focus in this case braks the client logic (e.g.
combobox menu in gtk+ using the X11 backend).

Check if the focus event is actually coming from a grab or ungrab and
do not revert focus in this case, to avoid breaking clients logic.
Signed-off-by: 's avatarOlivier Fourdan <ofourdan@redhat.com>
Tested-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
Acked-by: Quentin Glidic's avatarQuentin Glidic <sardemff7+git@sardemff7.net>
parent eca5cca5
......@@ -2055,6 +2055,12 @@ static void
weston_wm_handle_focus_in(struct weston_wm *wm, xcb_generic_event_t *event)
{
xcb_focus_in_event_t *focus = (xcb_focus_in_event_t *) event;
/* Do not interfere with grabs */
if (focus->mode == XCB_NOTIFY_MODE_GRAB ||
focus->mode == XCB_NOTIFY_MODE_UNGRAB)
return;
/* Do not let X clients change the focus behind the compositor's
* back. Reset the focus to the old one if it changed. */
if (!wm->focus_window || focus->event != wm->focus_window->id)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment