The main-loop mirror of the X-button clear was level-triggered: 'FindQuery=="" && widget has text'. But the widget updates on every keystroke while the logic only stores the query a round-trip later, so any frame drawn in that window still carried FindQuery=="" and wiped the input - the periodic self-clearing. Make it edge-triggered: FindState.ClearSeq bumps once per clear; the frame carries it as FindClearSeq; main wipes the widget input once per NEW value (lastFindClearSeq handshake). findClear bumps it; findReset preserves it (main tracks it monotonically, so a reset to 0 would swallow a later clear). Tests: unit asserts the bump, monotonicity, and close/reopen preservation. |
||
|---|---|---|
| .. | ||
| browser | ||
| editor | ||
| io/pool | ||
| perf | ||
| test/e2e | ||
| ui | ||