Skip to content

fix(cursor): smooth-zoom ease-out cut-off fires; no jump at the end of a zoom - #376

Merged
Maxaubert merged 1 commit into
developfrom
fix/375-zoom-end-jump
Oct 7, 2026
Merged

Maxaubert merged 1 commit into
developfrom
fix/375-zoom-end-jump

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Closes #375.

Cause

The truncated ease-out from #370 checked "is the zoom still moving?" before the zoom controller ticked, when level() still equalled last frame's level. The check never fired, so every ease-out ran its slow tail. There the zoom changes by ~0.05 % per frame and DWM's half-source-pixel origin rounding flips the image back and forth by about half the level in px.

Fix

  • Run the cut-off right after t.zoom.tick().
  • Never re-snap a request that equals the level on screen.

Measured (harness end_shake_test.py, smooth sampling, pointer tip per 144 Hz frame, max jump in the end phase)

Ease-out Before After
none 1-4 px 1.4-3.6 px
150 ms, ~5-6x 28-33 px 2 px
300 ms, ~5-6x 16-18 px 1.4-2 px
150-300 ms, ~15-20x up to 30 px 2-5 px

Gates: build.bat check, build.bat test (592/592). Deployed signed build on this PC.

🤖 Generated with Claude Code

https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu

The cut-off ran before the zoom controller ticked, when level() still equalled last frame's level,
so 'still moving' was never true and every ease-out ran its slow tail, where DWM's half-pixel
origin rounding flipped the image back and forth (measured: pointer jumps of 17-33 px at the end of
a zoom with a 150-300 ms ease-out). It now runs right after the tick. Also: a request equal to the
level on screen is never re-snapped. Measured after: end-of-zoom jumps 1.4-5 px at ease 0/150/300,
2-6x and up to ~20x, the same as during the zoom.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu
@Maxaubert
Maxaubert merged commit 6a073d0 into develop Oct 7, 2026
1 check passed
@Maxaubert
Maxaubert deleted the fix/375-zoom-end-jump branch October 7, 2026 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant