LearnNewsExamplesServices
Frontmatter
id9470
titleFix Grid Drag Scrolling Regression
stateClosed
labels
bugaigrid
assigneestobiu
createdAtMar 14, 2026, 11:45 AM
updatedAtMar 14, 2026, 11:46 AM
githubUrlhttps://github.com/neomjs/neo/issues/9470
authortobiu
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMar 14, 2026, 11:46 AM

Fix Grid Drag Scrolling Regression

Closed v12.1.0 bugaigrid
tobiu
tobiu commented on Mar 14, 2026, 11:45 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 GridDragScroll and ScrollSync. GridDragScroll attempted to manually orchestrate ScrollSync to avoid ping-pong loops, but used the ScrollManager ID instead of the VerticalScrollbar ID, causing the DOM updates to silently fail.

Resolution

Removed the explicit ScrollSync coupling from GridDragScroll.

  1. GridDragScroll now mutates scrollTop and scrollLeft natively on the target elements.
  2. This allows the browser to fire standard scroll events.
  3. ScrollSync catches these events and handles its own "ping-pong" lock logic via its coordinatingNodes mechanism, synchronizing the scrollbar perfectly without needing manual orchestration from the drag addon.
tobiu added the bug label on Mar 14, 2026, 11:45 AM
tobiu added the ai label on Mar 14, 2026, 11:45 AM
tobiu added the grid label on Mar 14, 2026, 11:45 AM
tobiu referenced in commit 0134c14 - "Fix Grid Drag Scrolling Regression (#9470)" on Mar 14, 2026, 11:45 AM
tobiu
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 ScrollSync awareness and leverages native scroll events, allowing ScrollSync'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