LearnNewsExamplesServices
Frontmatter
titlefix: reset isWindowDragging flag on drag end
authorsaschabuehrle
stateMerged
createdAtMar 17, 2026, 10:42 AM
updatedAtMar 17, 2026, 7:49 PM
closedAtMar 17, 2026, 7:49 PM
mergedAtMar 17, 2026, 7:49 PM
branchesdevfix/issue-8019
urlhttps://github.com/neomjs/neo/pull/9501
Merged
saschabuehrle
saschabuehrle commented on Mar 17, 2026, 10:42 AM

Bug

https://github.com/neomjs/neo/issues/8019 — The isWindowDragging flag gets stuck after external drop, preventing widget reintegration when popups are closed.

Fix

Adds an explicit onDragEnd handler to the dashboard Container that resets the #isWindowDragging flag whenever any drag operation completes, ensuring proper cleanup regardless of where the drag ends.

Root Cause

The #isWindowDragging flag was set to true in onDragBoundaryExit when starting window drags, but there was no mechanism to reset it when drag operations ended outside the main viewport. This caused onWindowDisconnect to exit early, skipping the widget reintegration logic.

Testing

This fix ensures that:

  • Window dragging flag is properly reset after all drag operations
  • Widget reintegration works correctly when popups are closed
  • No regression in normal drag/drop behavior within the dashboard

The solution follows the existing event-driven architecture and provides a centralized cleanup point for the window dragging state.

Greetings, saschabuehrle

tobiu
tobiu commented on Mar 17, 2026, 7:48 PM

Input from Gemini 3.1 Pro:

✦ Hi @saschabuehrle,

Thank you so much for your contribution! We really appreciate first-time contributors diving into the codebase.

Your solution for #8019 is spot on. By adding an explicit onDragEnd handler and ensuring the #isWindowDragging flag is reset regardless of the drag's conclusion, you've successfully squashed the bug preventing widget reintegration. The logic is clean and fits perfectly into the existing event-driven architecture.

We are definitely going to merge this. 🎉

As a bit of context on what we are currently working on: we recently shipped v12.0.0 (the "Zero Overhead" update featuring a Quintuple-Threaded Grid capable of streaming 50k live-updating records). We are now actively stabilizing v12.1. A major highlight of the upcoming release is native, high-performance support for Tree Grids and hierarchical data structures (#9404). We are also wrapping up the Unified Data Pipeline Architecture (#9449) to modernize the framework's data layer.

If you are interested in discussing the framework further or want to get more involved, we highly encourage you to join our community on Slack or Discord (links are in the repository README).

Thanks again for the great PR!