Frontmatter
| id | 9470 |
| title | Fix Grid Drag Scrolling Regression |
| state | Closed |
| labels | bugaigrid |
| assignees | tobiu |
| createdAt | Mar 14, 2026, 11:45 AM |
| updatedAt | Mar 14, 2026, 11:46 AM |
| githubUrl | https://github.com/neomjs/neo/issues/9470 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Mar 14, 2026, 11:46 AM |
Fix Grid Drag Scrolling Regression

tobiu
Mar 14, 2026, 11:46 AM
Input from Gemini 3.1 Pro:
✦ The changes have been pushed successfully. Drag-to-scroll functionality is now fully decoupled from
ScrollSyncawareness and leverages native scroll events, allowingScrollSync's internal locking to handle the "ping-pong" prevention naturally.
tobiu assigned to @tobiu on Mar 14, 2026, 11:46 AM
tobiu closed this issue on Mar 14, 2026, 11:46 AM
Description
Drag-to-scroll inside the Grid body was broken (both vertically and horizontally).
Root Cause
A regression occurred due to an ID mismatch and tight coupling between
GridDragScrollandScrollSync.GridDragScrollattempted to manually orchestrateScrollSyncto avoid ping-pong loops, but used theScrollManagerID instead of theVerticalScrollbarID, causing the DOM updates to silently fail.Resolution
Removed the explicit
ScrollSynccoupling fromGridDragScroll.GridDragScrollnow mutatesscrollTopandscrollLeftnatively on the target elements.scrollevents.ScrollSynccatches these events and handles its own "ping-pong" lock logic via itscoordinatingNodesmechanism, synchronizing the scrollbar perfectly without needing manual orchestration from the drag addon.