updateDrag static method
Updates the mouse coordinate of the active drag session and triggers dropzone hit testing.
Implementation
static void updateDrag(Point<int> mousePosition) {
final session = _activeSession;
if (session == null) return;
if (!session.sourceElement.mounted) {
cancelDrag();
return;
}
session.currentMousePosition = mousePosition;
// Find the topmost DragTargetElement under the mouse cursor
final root = _findRoot(session.sourceElement);
if (root == null || !root.mounted) return;
final hitElements = root.hitTest(mousePosition);
final hoveredTarget = hitElements
.whereType<DragTargetElement>()
.firstOrNull;
if (hoveredTarget != _lastHoveredTarget) {
final lastTarget = _lastHoveredTarget;
if (lastTarget != null && lastTarget.mounted) {
lastTarget.handleDragLeave(session);
}
if (hoveredTarget != null && hoveredTarget.mounted) {
hoveredTarget.handleDragEnter(session);
}
_lastHoveredTarget = hoveredTarget;
}
if (hoveredTarget != null && hoveredTarget.mounted) {
hoveredTarget.handleDragOver(session);
}
onDragSessionChanged?.call(session);
}