Browse Source

Fix GraphEdit port snapping in certain edge cases

Hendrik Brucker 1 year ago
parent
commit
1f0eddca70
1 changed files with 7 additions and 7 deletions
  1. 7 7
      scene/gui/graph_edit.cpp

+ 7 - 7
scene/gui/graph_edit.cpp

@@ -912,7 +912,7 @@ bool GraphEdit::_filter_input(const Point2 &p_point) {
 
 		// This prevents interactions with a port hotzone that is behind another node.
 		Rect2 graph_node_rect = Rect2(graph_node->get_position(), graph_node->get_size() * zoom);
-		if (graph_node_rect.has_point(click_pos * zoom)) {
+		if (graph_node_rect.has_point(p_point)) {
 			break;
 		}
 	}
@@ -1044,12 +1044,6 @@ void GraphEdit::_top_connection_layer_input(const Ref<InputEvent> &p_ev) {
 					return;
 				}
 			}
-
-			// This prevents interactions with a port hotzone that is behind another node.
-			Rect2 graph_node_rect = Rect2(graph_node->get_position(), graph_node->get_size() * zoom);
-			if (graph_node_rect.has_point(click_pos * zoom)) {
-				break;
-			}
 		}
 	}
 
@@ -1121,6 +1115,12 @@ void GraphEdit::_top_connection_layer_input(const Ref<InputEvent> &p_ev) {
 					}
 					connecting_target_valid = false;
 				}
+
+				// This prevents interactions with a port hotzone that is behind another node.
+				Rect2 graph_node_rect = Rect2(graph_node->get_position(), graph_node->get_size() * zoom);
+				if (graph_node_rect.has_point(mm->get_position())) {
+					break;
+				}
 			}
 		}
 	}