Make highlight overlays sticky on nonstandard scrolling #390
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.
Fixes #263
When scrolling inside an internal scrollable element or on pages with custom scrolling behavior, highlight overlays would desync from their target element. This fixes the issue by watching for relevant events and reattaching the overlays for a short period. One final attempt is delayed to catch even longer scrolling animations.
If performance suffers on low-end devices,
toRunEachFrame(updateHighlightOverlayPositions, 200, 1000)
can be changed to a simplerequestAnimationFrame(updateHighlightOverlayPositions)
to fix internal element scrolling (such as Obsidian web pages), but pages that interceptwheel
events and do custom scrolling (like Grok) will remain desynced. If performance is not an issue,toRunEachFrame
can be changed to run for a longer period or indefinitely.