From f9199bb6d4a31f8647bdd20bfbd5b7cf38bd9f53 Mon Sep 17 00:00:00 2001 From: John Lindgren Date: Wed, 14 Feb 2024 06:09:45 -0500 Subject: [PATCH] xwayland: set focus to XCB_POINTER_ROOT rather than XCB_NONE Fixes an issue with keyboard grabs not working when no XWayland windows are focused. --- xwayland/xwm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xwayland/xwm.c b/xwayland/xwm.c index 2ec053e4..67b00829 100644 --- a/xwayland/xwm.c +++ b/xwayland/xwm.c @@ -363,9 +363,13 @@ static void xwm_focus_window(struct wlr_xwm *xwm, // We handle cases where focus_surface == xsurface because we // want to be able to deny FocusIn events. if (!xsurface) { + // XCB_POINTER_ROOT is described in xcb documentation but isn't + // actually defined in the headers. It's distinct from XCB_NONE + // (which disables keyboard input entirely and causes issues + // with keyboard grabs for e.g. popups). xcb_set_input_focus_checked(xwm->xcb_conn, XCB_INPUT_FOCUS_POINTER_ROOT, - XCB_NONE, XCB_CURRENT_TIME); + 1L /*XCB_POINTER_ROOT*/, XCB_CURRENT_TIME); return; }