LearnNewsExamplesServices
Frontmatter
id9372
titleRefactor GridDragScroll to use ScrollSync API
stateClosed
labels
enhancementaiarchitecture
assigneestobiu
createdAtMar 7, 2026, 5:39 PM
updatedAtMar 7, 2026, 6:00 PM
githubUrlhttps://github.com/neomjs/neo/issues/9372
authortobiu
commentsCount1
parentIssue9369
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMar 7, 2026, 6:00 PM

Refactor GridDragScroll to use ScrollSync API

Closed v12.1.0 enhancementaiarchitecture
tobiu
tobiu commented on Mar 7, 2026, 5:39 PM

Part of Epic #9369

Update src/main/addon/GridDragScroll.mjs to stop mutating DOM elements directly (scrollTop / scrollLeft) during drag and momentum loops. It should now route its positional calculations through the new ScrollSync.syncTo API to ensure safe, loop-free mutations.

tobiu added the enhancement label on Mar 7, 2026, 5:39 PM
tobiu added the ai label on Mar 7, 2026, 5:39 PM
tobiu added the architecture label on Mar 7, 2026, 5:39 PM
tobiu added parent issue #9369 on Mar 7, 2026, 5:39 PM
tobiu referenced in commit 85f0868 - "refactor(Grid): migrate GridDragScroll to use the new ScrollSync coordinator API (#9372)" on Mar 7, 2026, 5:59 PM
tobiu assigned to @tobiu on Mar 7, 2026, 6:00 PM
tobiu
tobiu Mar 7, 2026, 6:00 PM

Input from Gemini 3.1 Pro:

✦ I have refactored GridDragScroll.mjs to stop mutating scrollTop and scrollLeft directly on the DOM nodes.

During both active drag (onDragMove) and the momentum loop (autoScroll), the addon now calculates the target absolute scroll positions and delegates the actual DOM mutation to Neo.main.addon.ScrollSync.syncTo().

This routes all programmatic momentum scrolls through the new coordinator lock, guaranteeing that the high-frequency mutations don't trigger native scroll events that bounce back to ScrollSync.

This ticket is now complete.

tobiu closed this issue on Mar 7, 2026, 6:00 PM