From 2913f0397c628a513a0e25499b76ceb2702c507e Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Sun, 25 Aug 2024 21:53:48 -0400 Subject: [PATCH] GH-467 Only save node size when manually resized --- src/editor/graph/graph_node.cpp | 15 +++++++++++++++ src/editor/graph/graph_node.h | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/src/editor/graph/graph_node.cpp b/src/editor/graph/graph_node.cpp index b1763dd1..66c50c1f 100644 --- a/src/editor/graph/graph_node.cpp +++ b/src/editor/graph/graph_node.cpp @@ -79,7 +79,15 @@ void OrchestratorGraphNode::_notification(int p_what) // Used to replicate size/position state to underlying node resource connect("dragged", callable_mp(this, &OrchestratorGraphNode::_on_node_moved)); + + // Godot 4.3 introduced a new resize_end callback that we will use now to handle triggering the + // final size of a node. This helps avoid issues with editor scale changes being problematic by + // leaving nodes too large after scale up. + #if GODOT_VERSION < 0x040300 connect("resized", callable_mp(this, &OrchestratorGraphNode::_on_node_resized)); + #else + connect("resize_end", callable_mp(this, &OrchestratorGraphNode::_on_resize_end)); + #endif // Used to replicate state changes from node resource to the UI _node->connect("pins_changed", callable_mp(this, &OrchestratorGraphNode::_on_pins_changed)); @@ -671,10 +679,17 @@ void OrchestratorGraphNode::_on_node_moved([[maybe_unused]] Vector2 p_old_pos, V _node->set_position(p_new_pos); } +#if GODOT_VERSION < 0x040300 void OrchestratorGraphNode::_on_node_resized() { _node->set_size(get_size()); } +#else +void OrchestratorGraphNode::_on_resize_end(const Vector2& p_size) +{ + _node->set_size(p_size); +} +#endif void OrchestratorGraphNode::_on_pins_changed() { diff --git a/src/editor/graph/graph_node.h b/src/editor/graph/graph_node.h index 66069044..3273a43a 100644 --- a/src/editor/graph/graph_node.h +++ b/src/editor/graph/graph_node.h @@ -233,8 +233,14 @@ class OrchestratorGraphNode : public GraphNode /// @param p_new_pos new position void _on_node_moved(Vector2 p_old_pos, Vector2 p_new_pos); + #if GODOT_VERSION < 0x040300 /// Called when the graph node is resized void _on_node_resized(); + #else + /// Called when the graph node manual resize finishes + /// @param p_size the new size + void _on_resize_end(const Vector2& p_size); + #endif /// Called when any pin detail has changed for this node void _on_pins_changed();