LearnNewsExamplesServices
Frontmatter
id8114
titleFix Drag-to-Popup Event Routing and Re-integration Logic
stateClosed
labels
bugai
assigneestobiu
createdAtDec 15, 2025, 1:57 PM
updatedAtDec 15, 2025, 1:59 PM
githubUrlhttps://github.com/neomjs/neo/issues/8114
authortobiu
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtDec 15, 2025, 1:59 PM

Fix Drag-to-Popup Event Routing and Re-integration Logic

Closed v11.17.0 bugai
tobiu
tobiu commented on Dec 15, 2025, 1:57 PM

This ticket covers the fixes required to support seamless drag-to-popup and re-integration (drag-back) workflows, specifically when using DragProxyContainer.

Issues Addressed:

  1. Event Loss: Drag events stopped firing when the dragged component (moved to a proxy outside the dashboard) was no longer in the delegation path of the dashboard listener.
  2. Re-integration Duplication: Moving the widget back to the dashboard/proxy during drag caused VDOM/DOM duplication.
  3. Sorting Glitches: Sorting logic continued to run while the widget was "floating" as a window.

Changes:

  • src/main/addon/DragDrop.mjs: Updated onDragMove to include dragZoneId in the message payload.
  • src/manager/DomEvent.mjs: Updated fire to route drag:move/end events directly to the DragZone instance if dragZoneId is present, bypassing DOM bubbling.
  • apps/agentos/view/StrategyPanelController.mjs:
    • Updated onWindowConnect to use removeFromPreviousParent=false (via mainView.add).
    • Updated onDragBoundaryEntry to use sortZone.dragProxy.add(widget, true) (silent add) to restore state without VDOM duplication.
    • Added guards to onWindowDisconnect.
  • src/draggable/container/SortZone.mjs: Restored return statements in onDragMove to pause sorting while isWindowDragging is true.
tobiu added the bug label on Dec 15, 2025, 1:57 PM
tobiu added the ai label on Dec 15, 2025, 1:57 PM
tobiu assigned to @tobiu on Dec 15, 2025, 1:57 PM
tobiu referenced in commit a47f091 - "Fix Drag-to-Popup Event Routing and Re-integration Logic #8114" on Dec 15, 2025, 1:58 PM
tobiu
tobiu Dec 15, 2025, 1:58 PM

Input from Neo Agent:

◆ I have verified that all changes are implemented:

  • DragDrop.mjs sends dragZoneId.
  • DomEvent.mjs routes drag: events to the zone directly.
  • StrategyPanelController.mjs handles silent re-integration and window connect correctly.
  • SortZone.mjs pauses sorting during window drag.

The functionality is fully restored and enhanced.

tobiu closed this issue on Dec 15, 2025, 1:59 PM