@@ -31,6 +31,23 @@ class DragCoordinator extends Manager {
3131 */
3232 activeTargetZone = null
3333
34+ /**
35+ * @param {Neo.draggable.container.SortZone } sourceSortZone
36+ * @param {Neo.component.Base } draggedItem
37+ * @param {DOMRect } proxyRect
38+ */
39+ handleVoid ( sourceSortZone , draggedItem , proxyRect ) {
40+ let me = this ;
41+
42+ if ( me . activeTargetZone ) {
43+ me . activeTargetZone . onRemoteDragLeave ( ) ;
44+ me . activeTargetZone = null ;
45+
46+ // Resume source drag (re-open popup)
47+ sourceSortZone . resumeWindowDrag ( draggedItem . reference || draggedItem . id , proxyRect )
48+ }
49+ }
50+
3451 /**
3552 * @param {Object } data
3653 * @param {Neo.component.Base } data.draggedItem
@@ -55,55 +72,39 @@ class DragCoordinator extends Manager {
5572 localX = screenX - targetWindow . innerRect . x ,
5673 localY = screenY - targetWindow . innerRect . y ;
5774
58- // console.log('DragCoordinator target found', {targetWindowId, localX, localY});
75+ if ( targetSortZone . acceptsRemoteDrag ( localX , localY ) ) {
76+ // console.log('DragCoordinator target found', {targetWindowId, localX, localY});
5977
60- // Entering a new target zone
61- if ( me . activeTargetZone !== targetSortZone ) {
62- // Leaving previous target (if any)
63- me . activeTargetZone ?. onRemoteDragLeave ( ) ;
78+ // Entering a new target zone
79+ if ( me . activeTargetZone !== targetSortZone ) {
80+ // Leaving previous target (if any)
81+ me . activeTargetZone ?. onRemoteDragLeave ( ) ;
6482
65- // Suspend source drag (close popup, etc)
66- // We only do this once when leaving the void/source context
67- if ( ! me . activeTargetZone ) {
68- sourceSortZone . suspendWindowDrag ( draggedItem . reference || draggedItem . id )
83+ // Suspend source drag (close popup, etc)
84+ // We only do this once when leaving the void/source context
85+ if ( ! me . activeTargetZone ) {
86+ sourceSortZone . suspendWindowDrag ( draggedItem . reference || draggedItem . id )
87+ }
88+
89+ me . activeTargetZone = targetSortZone
6990 }
7091
71- me . activeTargetZone = targetSortZone
72- }
92+ targetSortZone . onRemoteDragMove ( {
93+ draggedItem,
94+ localX,
95+ localY,
96+ offsetX,
97+ offsetY,
98+ proxyRect
99+ } ) ;
73100
74- targetSortZone . onRemoteDragMove ( {
75- draggedItem,
76- localX,
77- localY,
78- offsetX,
79- offsetY,
80- proxyRect
81- } )
82- } else {
83- // Window exists but no matching SortZone
84- me . handleVoid ( sourceSortZone , draggedItem , proxyRect )
101+ return
102+ }
85103 }
86- } else {
87- // In void or back in source window
88- me . handleVoid ( sourceSortZone , draggedItem , proxyRect )
89104 }
90- }
91-
92- /**
93- * @param {Neo.draggable.container.SortZone } sourceSortZone
94- * @param {Neo.component.Base } draggedItem
95- * @param {DOMRect } proxyRect
96- */
97- handleVoid ( sourceSortZone , draggedItem , proxyRect ) {
98- let me = this ;
99105
100- if ( me . activeTargetZone ) {
101- me . activeTargetZone . onRemoteDragLeave ( ) ;
102- me . activeTargetZone = null ;
103-
104- // Resume source drag (re-open popup)
105- sourceSortZone . resumeWindowDrag ( draggedItem . reference || draggedItem . id , proxyRect )
106- }
106+ // In void or back in source window
107+ me . handleVoid ( sourceSortZone , draggedItem , proxyRect )
107108 }
108109
109110 /**
0 commit comments