Repository navigation
fix(cursor): smooth-zoom ease-out cut-off fires; no jump at the end of a zoom - #376
Merged
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
t.zoom.tick().Measured (harness
end_shake_test.py, smooth sampling, pointer tip per 144 Hz frame, max jump in the end phase)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