File tree Expand file tree Collapse file tree 2 files changed +18
-3
lines changed
Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -112,7 +112,8 @@ def handle_mouse_down(self, event):
112112 if node .contains_point (world_x , world_y ) and clicked_node is None :
113113 node .dragging = True
114114 node .drag_offset = (world_x - node .x , world_y - node .y )
115- node .selected = True
115+ # Delegate selection logic:
116+ self .selection .select_node (node , self .nodes )
116117 clicked_node = node
117118 # --- Selected node should be always on top ---
118119 self .nodes .remove (node )
@@ -121,8 +122,9 @@ def handle_mouse_down(self, event):
121122 if not self ._node_drag_in_progress :
122123 self .undo_stack .push (copy .deepcopy (self .nx_graph ))
123124 self ._node_drag_in_progress = True
124- else :
125- node .selected = False
125+ # Deselect all if no node was clicked
126+ if clicked_node is None :
127+ self .selection .clear_selection (self .nodes )
126128
127129 elif event .button == pygame .BUTTON_MIDDLE :
128130 # Check if a node was clicked
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ def __init__(self):
33 self .rect_start = None
44 self .rect_end = None
55 self .nodes = []
6+ self .selected_nodes = []
67
78 def begin (self , start_pos ):
89 self .rect_start = start_pos
@@ -36,3 +37,15 @@ def clear(self):
3637
3738 def is_active (self ):
3839 return self .rect_start is not None and self .rect_end is not None
40+
41+ def select_node (self , node , all_nodes ):
42+ # Deselect all others, select only this node
43+ for n in all_nodes :
44+ n .selected = False
45+ node .selected = True
46+ self .selected_nodes = [node ]
47+
48+ def clear_selection (self , all_nodes ):
49+ for n in all_nodes :
50+ n .selected = False
51+ self .selected_nodes = []
You can’t perform that action at this time.
0 commit comments