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; }