Tags: acsandmann/rift
Tags
fix: mitigate focus corruption from boundary raise races (#355) When MoveFocus hits a boundary in a scrolling layout, the engine was falling back and returning ALL visible tiled windows as raise_windows. Holding down the focus key floods RaiseManager with sequences, each raising N windows. The queue backs up, so OS focus confirmations (WindowFocused) arrive out of order and can interfere with the engine's current focus state. - Boundary fallback: only focus the selected window, don't raise every visible tiled window. This stops the raise queue from exploding when a focus key is held at the edge. - WindowFocused guard: ignore the event if the window is not present in the active workspace/layout. Stale/delayed focus confirmations for windows that have left the layout are dropped instead of corrupting focused_window. This mitigates the focus corruption described in #285. Further work may be needed to fully eliminate races between delayed OS confirmations and subsequent focus commands.
PreviousNext