diff --git a/src/editor/graph/graph_edit.cpp b/src/editor/graph/graph_edit.cpp index 610b832a..2427fc8d 100644 --- a/src/editor/graph/graph_edit.cpp +++ b/src/editor/graph/graph_edit.cpp @@ -1207,6 +1207,9 @@ void OrchestratorGraphEdit::_hide_drag_hint() void OrchestratorGraphEdit::_on_connection_drag_started(const StringName& p_from, int p_from_port, bool p_output) { + OrchestratorSettings* os = OrchestratorSettings::get_singleton(); + const bool flow_disconnect_on_drag = os->get_setting("ui/graph/disconnect_control_flow_when_dragged", true); + _drag_context.start_drag(p_from, p_from_port, p_output); if (OrchestratorGraphNode* source = _get_by_name(p_from)) @@ -1215,6 +1218,9 @@ void OrchestratorGraphEdit::_on_connection_drag_started(const StringName& p_from { // From port is an output OrchestratorGraphNodePin* pin = source->get_output_pin(p_from_port); + if (pin && pin->is_execution() && flow_disconnect_on_drag) + pin->unlink_all(); + for_each_graph_node([&](OrchestratorGraphNode* node) { node->set_inputs_for_accept_opacity(0.3f, pin); node->set_all_outputs_opacity(0.3f); diff --git a/src/plugin/settings.cpp b/src/plugin/settings.cpp index b317c68b..9d1cdcb1 100644 --- a/src/plugin/settings.cpp +++ b/src/plugin/settings.cpp @@ -143,6 +143,7 @@ void OrchestratorSettings::_register_settings() _settings.emplace_back(BOOL_SETTING("ui/actions_menu/center_on_mouse", true)); + _settings.emplace_back(BOOL_SETTING("ui/graph/disconnect_control_flow_when_dragged", true)); _settings.emplace_back(BOOL_SETTING("ui/graph/show_minimap", false)); _settings.emplace_back(BOOL_SETTING("ui/graph/show_overlay_action_tooltips", true)); _settings.emplace_back(COLOR_NO_ALPHA_SETTING("ui/graph/knot_selected_color", Color(0.68f, 0.44f, 0.09f)));