ADR 0043: Faster global easing; welcome overlay two-column layout¶
Status¶
Accepted
Context¶
Two pieces of direct UI-polish feedback:
- Caret movement on Enter/Delete and general navigation felt slow — not the blink (already fine), the glide to a new position.
- The welcome overlay's shortcut list (docs/adr/0042), a single flat centered line per shortcut, read as visually disorganized.
Decision¶
kEaseFactor: 0.5 → 0.68¶
kEaseFactor was already the single constant every eased value in
editor_viewport.cpp multiplies its remaining distance by each frame
— caret glide, scroll, diagnostic focus reveal (docs/adr/0041), and
the welcome overlay's own fade (docs/adr/0042). Raising it speeds up
all of them together, by construction, with a one-line change — the
"make it global" request was already satisfied by the existing
architecture; this just raises the value. Remaining-distance-per-tick
drops from 0.5^n to 0.32^n, roughly halving the number of frames
to visually settle. Third bump on this constant (0.35 → 0.5,
docs/adr/0027 → 0.68 here) — motion feel is inherently something to
judge live, not from a screenshot, so this is reported for the user to
confirm during actual use rather than claimed as independently
verified.
Welcome overlay: two-column, dot-led layout¶
Replaced the flat "Ctrl+O — Open a file" centered string per line
with a {description, key} pair rendered as: a small bullet dot,
then the description left-aligned, then the key right-aligned — column
widths measured from the actual content (QFontMetrics::horizontalAdvance,
not guessed), so it stays aligned regardless of font/size. The whole
block is still centered under the logo; only the internal alignment
of each row changed. Verified live via screenshot — the four rows now
read as a clean, legend-style list rather than four independently
centered strings.
Consequences¶
No new state, no new timer — both changes are edits to existing code paths (a constant, and one drawing function's layout math). All 9/9 tests still pass (unrelated to this GUI-only change, re-run as a sanity check regardless).