"Does this happen if you don't have breakpoints in the code? " - yes, it does
"By D&D operations do you mean you are calling the DoDragDrop method? " - well, yes, but the DoDragDrop is called after the data from the 'point' is got.
Here is the code for simplicity, I should have been posted it in the first place:
public override MindFusion.Diagramming.InteractionState StartDraw(PointF point)
{
//MessageBox.Show(point.Y.ToString());
bool isModifierKeyPressed = (Control.ModifierKeys & Keys.Shift) == Keys.Shift;
if (isModifierKeyPressed)
{
return base.StartDraw(point);
}
DiagramNode node = Diagram.GetNodeAt(point, false, false);
if (node == null)
{
return null;
}
else
{
NHibernate.Mapping.Property selectedProperty = GetProperty(node, point);
if (selectedProperty != null)
{
this.DiagramView.DoDragDrop(selectedProperty, System.Windows.Forms.DragDropEffects.Copy);
return null;
}
else
{
this.Diagram.Selection.Clear();
node.Selected = true;
return base.StartDraw(point);
}
}
}
The MessageBox added to the first line shows the same value, no matter on what row I am starting to drag. This value is the correct Y coordinate for the first point where I start to drag. For the next drag actions (from other rows) the Y coordinate is not changed anymore.
But I don't have to add the MessageBox or the breakpoint. The GetProperty(node, point) returns the same property every time and that's because the 'point' is not correctly updated. (the GetProperty works properly)