input/seatop_default: fix focus on layer surface output switch

When `focus_follows_mouse` is enabled and the cursor moves from one
output to a layer surface (such as swaybar) on another output, Sway
would previously focus the workspace node.

This updates `check_focus_follows_mouse` to use
`seat_get_focus_inactive()`, ensuring that the previously focused window
on that workspace receives focus instead.
This commit is contained in:
Scott Leggett 2026-05-16 19:29:50 +08:00
parent 9c663b1fa1
commit f819d0000e
No known key found for this signature in database

View file

@ -565,7 +565,7 @@ static void check_focus_follows_mouse(struct sway_seat *seat,
struct sway_output *hovered_output = wlr_output->data;
if (focus && hovered_output != node_get_output(focus)) {
struct sway_workspace *ws = output_get_active_workspace(hovered_output);
seat_set_focus(seat, &ws->node);
seat_set_focus(seat, seat_get_focus_inactive(seat, &ws->node));
transaction_commit_dirty();
}
return;