Browse Source

Fix emit_signal timing for GraphEdit's begin/end node move

(cherry picked from commit fbc095dc784925e3f9dbae406a62c007bff33e4d)
Gabriel Van Eyck 4 years ago
parent
commit
7735cdaf8f
2 changed files with 8 additions and 3 deletions
  1. 7 3
      scene/gui/graph_edit.cpp
  2. 1 0
      scene/gui/graph_edit.h

+ 7 - 3
scene/gui/graph_edit.cpp

@@ -811,6 +811,10 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
 	}
 
 	if (mm.is_valid() && dragging) {
+		if (!moving_selection) {
+			emit_signal("_begin_node_move");
+			moving_selection = true;
+		}
 
 		just_selected = true;
 		drag_accum += mm->get_relative();
@@ -920,16 +924,16 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
 			}
 
 			if (drag_accum != Vector2()) {
-
-				emit_signal("_begin_node_move");
-
 				for (int i = get_child_count() - 1; i >= 0; i--) {
 					GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
 					if (gn && gn->is_selected())
 						gn->set_drag(false);
 				}
+			}
 
+			if (moving_selection) {
 				emit_signal("_end_node_move");
+				moving_selection = false;
 			}
 
 			dragging = false;

+ 1 - 0
scene/gui/graph_edit.h

@@ -98,6 +98,7 @@ private:
 
 	bool dragging;
 	bool just_selected;
+	bool moving_selection;
 	Vector2 drag_accum;
 
 	float zoom;