Skip to content

Commit

Permalink
Merge pull request #497 from VacuumBreather/fix/493_properly_cancel_drag
Browse files Browse the repository at this point in the history
Always correctly reset state when drag is cancelled
  • Loading branch information
punker76 authored Dec 5, 2024
2 parents 22dfca8 + 9b782f3 commit a72612b
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 13 deletions.
2 changes: 0 additions & 2 deletions src/GongSolutions.WPF.DragDrop/DragDrop.Properties.cs
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ private static void OnIsDragSourceChanged(DependencyObject d, DependencyProperty
uiElement.PreviewTouchUp -= DragSourceOnTouchUp;
uiElement.PreviewTouchMove -= DragSourceOnTouchMove;

uiElement.QueryContinueDrag -= DragSourceOnQueryContinueDrag;
uiElement.GiveFeedback -= DragSourceOnGiveFeedback;

if ((bool)e.NewValue)
Expand All @@ -113,7 +112,6 @@ private static void OnIsDragSourceChanged(DependencyObject d, DependencyProperty
uiElement.PreviewTouchUp += DragSourceOnTouchUp;
uiElement.PreviewTouchMove += DragSourceOnTouchMove;

uiElement.QueryContinueDrag += DragSourceOnQueryContinueDrag;
uiElement.GiveFeedback += DragSourceOnGiveFeedback;
}
}
Expand Down
15 changes: 4 additions & 11 deletions src/GongSolutions.WPF.DragDrop/DragDrop.cs
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,10 @@ private static void DoDragSourceMove(object sender, Func<IInputElement, Point> g
if (dragDropEffects == DragDropEffects.None)
{
dragHandler.DragCancelled();
DragDropPreview = null;
DragDropEffectPreview = null;
DropTargetAdorner = null;
Mouse.OverrideCursor = null;
}

dragHandler.DragDropOperationFinished(dragDropEffects, dragInfo);
Expand All @@ -678,17 +682,6 @@ private static void DoDragSourceMove(object sender, Func<IInputElement, Point> g
}
}

private static void DragSourceOnQueryContinueDrag(object sender, QueryContinueDragEventArgs e)
{
if (e.Action == DragAction.Cancel || e.EscapePressed || (e.KeyStates.HasFlag(DragDropKeyStates.LeftMouseButton) == e.KeyStates.HasFlag(DragDropKeyStates.RightMouseButton)))
{
DragDropPreview = null;
DragDropEffectPreview = null;
DropTargetAdorner = null;
Mouse.OverrideCursor = null;
}
}

private static void DropTargetOnDragLeave(object sender, DragEventArgs e)
{
SetIsDragOver(sender as DependencyObject, false);
Expand Down

0 comments on commit a72612b

Please sign in to comment.