From 71b4b180bae83f47ad32dacfc64818d80ba91f2b Mon Sep 17 00:00:00 2001 From: asynts Date: Tue, 14 Jan 2020 15:48:00 +0100 Subject: Prevent crash described in #34555. Normally it wouldn't be possible to click on the "Connect" button if no node is selected, because the button would be disabled. However, double clicking on a node is also hooked up to the same signal and double clicking is possible even if the "Connect" button is disabled. This caused a crash described in #34555. --- editor/connections_dialog.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'editor/connections_dialog.cpp') diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index 60058f2f43..078ef62a5d 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -148,6 +148,16 @@ void ConnectDialog::_tree_node_selected() { get_ok()->set_disabled(false); } +/* + * Called each time a target node is activated within the target node tree. + */ +void ConnectDialog::_tree_item_activated() { + + if (!get_ok()->is_disabled()) { + get_ok()->emit_signal("pressed"); + } +} + /* * Adds a new parameter bind to connection. */ @@ -211,6 +221,7 @@ void ConnectDialog::_bind_methods() { ClassDB::bind_method("_advanced_pressed", &ConnectDialog::_advanced_pressed); ClassDB::bind_method("_cancel", &ConnectDialog::_cancel_pressed); ClassDB::bind_method("_tree_node_selected", &ConnectDialog::_tree_node_selected); + ClassDB::bind_method("_tree_item_activated", &ConnectDialog::_tree_item_activated); ClassDB::bind_method("_add_bind", &ConnectDialog::_add_bind); ClassDB::bind_method("_remove_bind", &ConnectDialog::_remove_bind); @@ -360,7 +371,7 @@ ConnectDialog::ConnectDialog() { tree = memnew(SceneTreeEditor(false)); tree->set_connecting_signal(true); - tree->get_scene_tree()->connect("item_activated", this, "_ok"); + tree->get_scene_tree()->connect("item_activated", this, "_tree_item_activated"); tree->connect("node_selected", this, "_tree_node_selected"); tree->set_connect_to_script_mode(true); -- cgit v1.2.3