Skip to content

Commit

Permalink
fix Issue #49
Browse files Browse the repository at this point in the history
The Dropped function from IDragSource is called on the target and not
the Source
  • Loading branch information
Jan Karger committed Apr 5, 2013
1 parent e4c81b3 commit 3c372e2
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions GongSolutions.Wpf.DragDrop/DragDrop.cs
Original file line number Diff line number Diff line change
Expand Up @@ -593,6 +593,20 @@ private static void DragSource_PreviewMouseLeftButtonUp(object sender, MouseButt
m_ClickSupressItem = null;
}

private static IDragSource TryGetDragHandler(DragInfo dragInfo, UIElement sender)
{
IDragSource dragHandler = null;
if (dragInfo != null && dragInfo.VisualSource != null)
{
dragHandler = GetDragHandler(m_DragInfo.VisualSource);
}
if (dragHandler == null && sender != null)
{
dragHandler = GetDragHandler(sender);
}
return dragHandler ?? DefaultDragHandler;
}

private static void DragSource_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (m_DragInfo != null && !m_DragInProgress)
Expand All @@ -603,16 +617,8 @@ private static void DragSource_PreviewMouseMove(object sender, MouseEventArgs e)
if (Math.Abs(position.X - dragStart.X) > SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(position.Y - dragStart.Y) > SystemParameters.MinimumVerticalDragDistance)
{
var dragHandler = GetDragHandler(m_DragInfo.VisualSource);

if (dragHandler != null)
{
dragHandler.StartDrag(m_DragInfo);
}
else
{
DefaultDragHandler.StartDrag(m_DragInfo);
}
var dragHandler = TryGetDragHandler(m_DragInfo, sender as UIElement);
dragHandler.StartDrag(m_DragInfo);

if (m_DragInfo.Effects != DragDropEffects.None && m_DragInfo.Data != null)
{
Expand Down Expand Up @@ -769,7 +775,7 @@ private static void DropTarget_PreviewDrop(object sender, DragEventArgs e)
{
var dropInfo = new DropInfo(sender, e, m_DragInfo);
var dropHandler = GetDropHandler((UIElement)sender) ?? DefaultDropHandler;
var dragHandler = GetDragHandler((UIElement)sender) ?? DefaultDragHandler;
var dragHandler = TryGetDragHandler(m_DragInfo, sender as UIElement);

DragAdorner = null;
EffectAdorner = null;
Expand Down

0 comments on commit 3c372e2

Please sign in to comment.