You've already forked godot
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:
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user