layer_shell: fix focus stealing for ON_DEMAND surfaces

arrange_layers was stripping focus from any surface that wasn't strictly
EXCLUSIVE. This caused ON_DEMAND surfaces like
`fuzzel --keyboard-focus=on-demand` to immediately lose focus upon
receiving it.

Update the check to only strip focus if the surface explicitly requests
NONE keyboard interactivity.
This commit is contained in:
Scott Leggett 2026-06-22 14:41:44 +08:00 committed by Simon Ser
parent cff7a88bda
commit 33ae5a92d5

View file

@ -132,7 +132,7 @@ void arrange_layers(struct sway_output *output) {
seat_set_focus_layer(seat, topmost->layer_surface); seat_set_focus_layer(seat, topmost->layer_surface);
} else if (seat->focused_layer && } else if (seat->focused_layer &&
seat->focused_layer->current.keyboard_interactive seat->focused_layer->current.keyboard_interactive
!= ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE) { == ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE) {
seat_set_focus_layer(seat, NULL); seat_set_focus_layer(seat, NULL);
} }
} }