@ -374,6 +374,16 @@ namespace ICSharpCode.SharpDevelop.Gui
@@ -374,6 +374,16 @@ namespace ICSharpCode.SharpDevelop.Gui
ExtTreeNode node = GetNodeAt ( clientcoordinate ) as ExtTreeNode ;
if ( node ! = null ) {
HandleDragOver ( e , node ) ;
if ( e . Effect ! = DragDropEffects . None ) {
SelectedNode = node ;
}
}
}
void HandleDragOver ( DragEventArgs e , ExtTreeNode node )
{
DragDropEffects effect = DragDropEffects . None ;
if ( ( e . KeyState & 8 ) > 0 ) { // CTRL key pressed.
@ -382,11 +392,6 @@ namespace ICSharpCode.SharpDevelop.Gui
@@ -382,11 +392,6 @@ namespace ICSharpCode.SharpDevelop.Gui
effect = DragDropEffects . Move ;
}
e . Effect = node . GetDragDropEffect ( e . Data , effect ) ;
if ( e . Effect ! = DragDropEffects . None ) {
SelectedNode = node ;
}
}
}
protected override void OnDragDrop ( DragEventArgs e )
@ -396,10 +401,17 @@ namespace ICSharpCode.SharpDevelop.Gui
@@ -396,10 +401,17 @@ namespace ICSharpCode.SharpDevelop.Gui
ExtTreeNode node = GetNodeAt ( clientcoordinate ) as ExtTreeNode ;
if ( node ! = null ) {
// when dragging very fast from one node to another, it's possible that
// OnDragDrop raises without OnDragOver for the node.
// So we have to call HandleDragOver to ensure that we don't call DoDragDrop for
// invalid operations.
HandleDragOver ( e , node ) ;
if ( e . Effect ! = DragDropEffects . None ) {
node . DoDragDrop ( e . Data , e . Effect ) ;
SortParentNodes ( node ) ;
}
}
}
public int GetImageIndexForImage ( string image , bool performCutBitmap )
{