@@ -167,10 +167,10 @@ void SetFlag(IElement element, RenderState flag, bool value, bool setConnections
167
167
connection . state = SetFlag ( connection . state , flag , value ) ;
168
168
if ( setConnections )
169
169
{
170
- if ( connection . From != null )
171
- connection . From . state = SetFlag ( connection . From . state , flag , value ) ;
172
- if ( connection . To != null )
173
- connection . To . state = SetFlag ( connection . To . state , flag , value ) ;
170
+ // if (connection.From != null)
171
+ // connection.From.state = SetFlag(connection.From.state, flag, value);
172
+ // if (connection.To != null)
173
+ // connection.To.state = SetFlag(connection.To.state, flag, value);
174
174
//SetFlag(connection.From, flag, value, setConnections);
175
175
//SetFlag(connection.To, flag, value, setConnections);
176
176
}
@@ -679,6 +679,7 @@ protected override void OnPaint(PaintEventArgs e)
679
679
680
680
e . Graphics . Transform = transformation ;
681
681
682
+ GraphRenderer . PerformLayout ( e . Graphics , graphNodes ) ;
682
683
GraphRenderer . Render ( e . Graphics , graphNodes , ShowLabels ) ;
683
684
if ( dragging )
684
685
{
@@ -830,6 +831,7 @@ protected override void OnMouseMove(MouseEventArgs e)
830
831
}
831
832
}
832
833
834
+ NodeConnector destinationConnector = null ;
833
835
IElement draggingOverElement = null ;
834
836
var element = FindElementAt ( transformed_location ) ;
835
837
if ( element != null )
@@ -888,27 +890,22 @@ protected override void OnMouseMove(MouseEventArgs e)
888
890
case ElementType . InputConnector :
889
891
case ElementType . OutputConnector :
890
892
{
891
- var connector = element as NodeConnector ;
893
+ destinationConnector = element as NodeConnector ;
892
894
893
895
if ( DragElement != null &&
894
896
( DragElement . ElementType == ElementType . InputConnector ||
895
897
DragElement . ElementType == ElementType . OutputConnector ) )
896
898
{
897
899
var dragConnector = DragElement as NodeConnector ;
898
- if ( dragConnector . Node == connector . Node ||
900
+ if ( dragConnector . Node == destinationConnector . Node ||
899
901
DragElement . ElementType == element . ElementType )
900
902
{
901
903
element = null ;
902
904
break ;
903
905
}
904
906
}
905
907
906
- var pre_points = new PointF [ ] {
907
- new PointF ( ( connector . bounds . Left + connector . bounds . Right ) / 2 ,
908
- ( connector . bounds . Top + connector . bounds . Bottom ) / 2 ) } ;
909
- transformation . TransformPoints ( pre_points ) ;
910
- snappedLocation = pre_points [ 0 ] ;
911
- draggingOverElement = connector . Node ;
908
+ draggingOverElement = destinationConnector . Node ;
912
909
break ;
913
910
}
914
911
}
@@ -925,6 +922,9 @@ protected override void OnMouseMove(MouseEventArgs e)
925
922
if ( internalDragOverElement != null )
926
923
{
927
924
SetFlag ( internalDragOverElement , RenderState . DraggedOver , false ) ;
925
+ var node = GetElementNode ( internalDragOverElement ) ;
926
+ if ( node != null )
927
+ GraphRenderer . PerformLayout ( this . CreateGraphics ( ) , node ) ;
928
928
needRedraw = true ;
929
929
}
930
930
@@ -933,15 +933,48 @@ protected override void OnMouseMove(MouseEventArgs e)
933
933
if ( internalDragOverElement != null )
934
934
{
935
935
SetFlag ( internalDragOverElement , RenderState . DraggedOver , true ) ;
936
+ var node = GetElementNode ( internalDragOverElement ) ;
937
+ if ( node != null )
938
+ GraphRenderer . PerformLayout ( this . CreateGraphics ( ) , node ) ;
936
939
needRedraw = true ;
937
940
}
938
941
}
939
942
943
+ if ( destinationConnector != null )
944
+ {
945
+ if ( ! destinationConnector . bounds . IsEmpty )
946
+ {
947
+ var pre_points = new PointF [ ] {
948
+ new PointF ( ( destinationConnector . bounds . Left + destinationConnector . bounds . Right ) / 2 ,
949
+ ( destinationConnector . bounds . Top + destinationConnector . bounds . Bottom ) / 2 ) } ;
950
+ transformation . TransformPoints ( pre_points ) ;
951
+ snappedLocation = pre_points [ 0 ] ;
952
+ }
953
+ }
954
+
955
+
940
956
if ( needRedraw )
941
957
this . Refresh ( ) ;
942
958
}
943
959
#endregion
944
960
961
+ #region GetElementNode
962
+ private Node GetElementNode ( IElement element )
963
+ {
964
+ if ( element == null )
965
+ return null ;
966
+ switch ( element . ElementType )
967
+ {
968
+ default :
969
+ case ElementType . Connection : return null ;
970
+ case ElementType . InputConnector : return ( ( NodeInputConnector ) element ) . Node ;
971
+ case ElementType . OutputConnector : return ( ( NodeInputConnector ) element ) . Node ;
972
+ case ElementType . NodeItem : return ( ( NodeItem ) element ) . Node ;
973
+ case ElementType . Node : return ( Node ) element ;
974
+ }
975
+ }
976
+ #endregion
977
+
945
978
#region OnMouseUp
946
979
protected override void OnMouseUp ( MouseEventArgs e )
947
980
{
@@ -979,10 +1012,7 @@ protected override void OnMouseUp(MouseEventArgs e)
979
1012
return ;
980
1013
}
981
1014
case ElementType . Connection :
982
- {
983
- needRedraw = true ;
984
- return ;
985
- }
1015
+ case ElementType . NodeItem :
986
1016
case ElementType . Node :
987
1017
{
988
1018
needRedraw = true ;
@@ -1017,10 +1047,11 @@ protected override void OnMouseUp(MouseEventArgs e)
1017
1047
#endregion
1018
1048
1019
1049
#region OnDoubleClick
1050
+ bool ignoreDoubleClick = false ;
1020
1051
protected override void OnDoubleClick ( EventArgs e )
1021
1052
{
1022
1053
base . OnDoubleClick ( e ) ;
1023
- if ( mouseMoved )
1054
+ if ( mouseMoved || ignoreDoubleClick )
1024
1055
return ;
1025
1056
1026
1057
var points = new Point [ ] { lastLocation } ;
@@ -1053,6 +1084,7 @@ protected override void OnDoubleClick(EventArgs e)
1053
1084
#region OnClick
1054
1085
protected override void OnClick ( EventArgs e )
1055
1086
{
1087
+ ignoreDoubleClick = false ;
1056
1088
base . OnClick ( e ) ;
1057
1089
if ( mouseMoved )
1058
1090
return ;
@@ -1072,7 +1104,7 @@ protected override void OnClick(EventArgs e)
1072
1104
var item = element as NodeItem ;
1073
1105
if ( item . OnClick ( ) )
1074
1106
{
1075
- mouseMoved = true ; // to avoid double-click from firing
1107
+ ignoreDoubleClick = true ; // to avoid double-click from firing
1076
1108
this . Refresh ( ) ;
1077
1109
return ;
1078
1110
}
0 commit comments