1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-06 12:20:30 +00:00

Fix crash in connection dialog

This commit is contained in:
kobewi
2022-11-02 19:50:33 +01:00
parent 39cece382d
commit ee53b17277
2 changed files with 3 additions and 7 deletions

View File

@@ -684,6 +684,7 @@ void ConnectionsDock::_connect(ConnectDialog::ConnectionData p_cd) {
} }
Callable callable = p_cd.get_callable(); Callable callable = p_cd.get_callable();
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
undo_redo->create_action(vformat(TTR("Connect '%s' to '%s'"), String(p_cd.signal), String(p_cd.method))); undo_redo->create_action(vformat(TTR("Connect '%s' to '%s'"), String(p_cd.signal), String(p_cd.method)));
undo_redo->add_do_method(source, "connect", p_cd.signal, callable, p_cd.flags); undo_redo->add_do_method(source, "connect", p_cd.signal, callable, p_cd.flags);
undo_redo->add_undo_method(source, "disconnect", p_cd.signal, callable); undo_redo->add_undo_method(source, "disconnect", p_cd.signal, callable);
@@ -704,6 +705,7 @@ void ConnectionsDock::_disconnect(TreeItem &p_item) {
ERR_FAIL_COND(cd.source != selected_node); // Shouldn't happen but... Bugcheck. ERR_FAIL_COND(cd.source != selected_node); // Shouldn't happen but... Bugcheck.
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
undo_redo->create_action(vformat(TTR("Disconnect '%s' from '%s'"), cd.signal, cd.method)); undo_redo->create_action(vformat(TTR("Disconnect '%s' from '%s'"), cd.signal, cd.method));
Callable callable = cd.get_callable(); Callable callable = cd.get_callable();
@@ -730,6 +732,7 @@ void ConnectionsDock::_disconnect_all() {
TreeItem *child = item->get_first_child(); TreeItem *child = item->get_first_child();
String signal_name = item->get_metadata(0).operator Dictionary()["name"]; String signal_name = item->get_metadata(0).operator Dictionary()["name"];
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
undo_redo->create_action(vformat(TTR("Disconnect all from signal: '%s'"), signal_name)); undo_redo->create_action(vformat(TTR("Disconnect all from signal: '%s'"), signal_name));
while (child) { while (child) {
@@ -991,10 +994,6 @@ void ConnectionsDock::_bind_methods() {
ClassDB::bind_method("update_tree", &ConnectionsDock::update_tree); ClassDB::bind_method("update_tree", &ConnectionsDock::update_tree);
} }
void ConnectionsDock::set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo) {
undo_redo = p_undo_redo;
}
void ConnectionsDock::set_node(Node *p_node) { void ConnectionsDock::set_node(Node *p_node) {
selected_node = p_node; selected_node = p_node;
update_tree(); update_tree();

View File

@@ -47,7 +47,6 @@
#include "scene/gui/tree.h" #include "scene/gui/tree.h"
class ConnectDialogBinds; class ConnectDialogBinds;
class EditorUndoRedoManager;
class ConnectDialog : public ConfirmationDialog { class ConnectDialog : public ConfirmationDialog {
GDCLASS(ConnectDialog, ConfirmationDialog); GDCLASS(ConnectDialog, ConfirmationDialog);
@@ -197,7 +196,6 @@ class ConnectionsDock : public VBoxContainer {
Button *connect_button = nullptr; Button *connect_button = nullptr;
PopupMenu *signal_menu = nullptr; PopupMenu *signal_menu = nullptr;
PopupMenu *slot_menu = nullptr; PopupMenu *slot_menu = nullptr;
Ref<EditorUndoRedoManager> undo_redo;
LineEdit *search_box = nullptr; LineEdit *search_box = nullptr;
HashMap<StringName, HashMap<StringName, String>> descr_cache; HashMap<StringName, HashMap<StringName, String>> descr_cache;
@@ -231,7 +229,6 @@ protected:
static void _bind_methods(); static void _bind_methods();
public: public:
void set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo);
void set_node(Node *p_node); void set_node(Node *p_node);
void update_tree(); void update_tree();