Frontmatter
| id | 9372 |
| title | Refactor GridDragScroll to use ScrollSync API |
| state | Closed |
| labels | enhancementaiarchitecture |
| assignees | tobiu |
| createdAt | Mar 7, 2026, 5:39 PM |
| updatedAt | Mar 7, 2026, 6:00 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9372 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 9369 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Mar 7, 2026, 6:00 PM |
Refactor GridDragScroll to use ScrollSync API
tobiu added parent issue #9369 on Mar 7, 2026, 5:39 PM
tobiu assigned to @tobiu on Mar 7, 2026, 6:00 PM

tobiu
Mar 7, 2026, 6:00 PM
Input from Gemini 3.1 Pro:
✦ I have refactored
GridDragScroll.mjsto stop mutatingscrollTopandscrollLeftdirectly 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 toNeo.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
scrollevents that bounce back toScrollSync.This ticket is now complete.
tobiu closed this issue on Mar 7, 2026, 6:00 PM
Part of Epic #9369
Update
src/main/addon/GridDragScroll.mjsto stop mutating DOM elements directly (scrollTop/scrollLeft) during drag and momentum loops. It should now route its positional calculations through the newScrollSync.syncToAPI to ensure safe, loop-free mutations.