From e6d613ca2e82623fbf9744b0da93d906a4fc03b3 Mon Sep 17 00:00:00 2001 From: Armin Preiml Date: Tue, 3 Jul 2018 15:03:00 +0200 Subject: [PATCH 1/2] fix: add stack update on focus change Enable the stack update again for focus changes on non-focusable views. --- CONTRIBUTING.md | 2 +- xwayland/xwm.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9dd7f504..c6110522 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -236,7 +236,7 @@ error_session: ## Wayland protocol implementation Each protocol generally lives in a file with the same name, usually containing -at leats one struct for each interface in the protocol. For instance, +at least one struct for each interface in the protocol. For instance, `xdg_shell` lives in `types/wlr_xdg_shell.h` and has a `wlr_xdg_surface` struct. ### Globals diff --git a/xwayland/xwm.c b/xwayland/xwm.c index 54550d0c..ad8cd4ad 100644 --- a/xwayland/xwm.c +++ b/xwayland/xwm.c @@ -228,13 +228,13 @@ static void xwm_send_focus_window(struct wlr_xwm *xwm, // if the surface doesn't allow the focus request, we will send him // only the take focus event. It will get the focus by itself. xwm_send_wm_message(xsurface, &message_data, XCB_EVENT_MASK_NO_EVENT); - return; } + else { + xwm_send_wm_message(xsurface, &message_data, XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT); - xwm_send_wm_message(xsurface, &message_data, XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT); - - xcb_set_input_focus(xwm->xcb_conn, XCB_INPUT_FOCUS_POINTER_ROOT, - xsurface->window_id, XCB_CURRENT_TIME); + xcb_set_input_focus(xwm->xcb_conn, XCB_INPUT_FOCUS_POINTER_ROOT, + xsurface->window_id, XCB_CURRENT_TIME); + } uint32_t values[1]; values[0] = XCB_STACK_MODE_ABOVE; From 26b2012b5e7a794ad436b6fdee04691b7818c85d Mon Sep 17 00:00:00 2001 From: Armin Preiml Date: Tue, 3 Jul 2018 15:11:02 +0200 Subject: [PATCH 2/2] fix style issue --- xwayland/xwm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/xwayland/xwm.c b/xwayland/xwm.c index ad8cd4ad..62d6a861 100644 --- a/xwayland/xwm.c +++ b/xwayland/xwm.c @@ -228,8 +228,7 @@ static void xwm_send_focus_window(struct wlr_xwm *xwm, // if the surface doesn't allow the focus request, we will send him // only the take focus event. It will get the focus by itself. xwm_send_wm_message(xsurface, &message_data, XCB_EVENT_MASK_NO_EVENT); - } - else { + } else { xwm_send_wm_message(xsurface, &message_data, XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT); xcb_set_input_focus(xwm->xcb_conn, XCB_INPUT_FOCUS_POINTER_ROOT,