Skip to content

v0.2.0

Latest

Choose a tag to compare

@adamtheturtle adamtheturtle released this 18 Jul 18:03
d41ba26

Keyboard and pointer input fixes. Each carries a regression test verified to fail without its fix.

Fixed

  • The key monitor no longer swallows arrow keys application-wide (#9). addLocalMonitorForEvents receives every key event posted to the application, and the handler consumed arrows unconditionally with no window check. With the palette open as a window-modal sheet on one window, pressing ↓ in a second, still-interactive window did nothing there and silently advanced the hidden palette's selection instead. The monitor now gates on the palette's own window.
  • Extended keyboard navigation now honours a flag set after presentation (#10). The @Environment value was read from inside the escaping monitor closure, which served a snapshot taken when the monitor was installed — so a host enabling .commandPaletteExtendedKeyboardNavigation() after the palette appeared was ignored. The flag is now mirrored into @State during body evaluation.
  • Hover no longer fights keyboard navigation (#11). Holding ↓ with the pointer resting over the result list scrolled rows under a stationary cursor, which fired onHover and yanked the selection back to whatever row landed underneath, stalling navigation. Hover-driven selection is now ignored briefly after a keyboard move.

Note

Issue #10 originally predicted that the environment read returned its default, leaving extended navigation dead on macOS. Testing against a real windowed host disproved that — the feature worked before the fix. The real defect was the stale snapshot described above, which is narrower: it needs the flag to change after presentation. The issue has been corrected.

Full changelog: v0.1.0...v0.2.0