diff --git a/src/input/cursor.c b/src/input/cursor.c index 2cf3da12..7b4ff90b 100644 --- a/src/input/cursor.c +++ b/src/input/cursor.c @@ -637,10 +637,11 @@ _cursor_update_focus(struct server *server) struct cursor_context ctx = get_cursor_context(server); if ((ctx.view || ctx.surface) && rc.focus_follow_mouse - && !rc.focus_follow_mouse_requires_movement - && server->input_mode - != LAB_INPUT_STATE_WINDOW_SWITCHER) { - /* Prevents changing keyboard focus during A-Tab */ + && !rc.focus_follow_mouse_requires_movement) { + /* + * Always focus the surface below the cursor when + * followMouse=yes and followMouseRequiresMovement=no. + */ desktop_focus_view_or_surface(&server->seat, ctx.view, ctx.surface, rc.raise_on_focus); } diff --git a/src/osd.c b/src/osd.c index f5863b61..d801977b 100644 --- a/src/osd.c +++ b/src/osd.c @@ -205,6 +205,7 @@ osd_finish(struct server *server) server->osd_state.preview_node = NULL; server->osd_state.preview_anchor = NULL; + server->osd_state.cycle_view = NULL; struct output *output; wl_list_for_each(output, &server->outputs, link) { @@ -219,15 +220,6 @@ osd_finish(struct server *server) /* Hiding OSD may need a cursor change */ cursor_update_focus(server); - - /* - * We delay resetting cycle_view until after cursor_update_focus() - * has been called to allow A-Tab keyboard focus switching even if - * followMouse has been configured and the cursor is on a different - * surface. Otherwise cursor_update_focus() would automatically - * refocus the surface the cursor is currently on. - */ - server->osd_state.cycle_view = NULL; } static void