void (@NotNull MouseEvent e) { if (myPressPointScreen == null || myCancelled) return; final boolean deadZone = isWithinDeadZone(e); if (!myDraggingNow && !deadZone) { myDraggingNow = true; myDragJustStarted = true; } else if (myDraggingNow) { myDragJustStarted = false; } if (myDraggingNow && myPressPointScreen != null) { final Point draggedTo = new RelativePoint(e).getScreenPoint(); boolean dragOutStarted = false; if (!myDetachingMode) { if (isDragOut(e, draggedTo, (Point)myPressPointScreen.clone())) { myDetachingMode = true; processDragFinish(e, true); dragOutStarted = true; } } if (myDetachingMode) { processDragOut(e, draggedTo, (Point)myPressPointScreen.clone(), dragOutStarted); } else { processDrag(e, draggedTo, (Point)myPressPointScreen.clone()); } } }