diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2018-02-14 15:36:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-14 15:36:45 +0100 |
commit | aeffa1cd106bc828d0f113ff600b9431fb624f72 (patch) | |
tree | a552da2ac64e951b1007ce89ee3ca2b7fbf88df1 /editor/script_editor_debugger.cpp | |
parent | aec88ff7adb2ec16e0ab57fe3ad59b0804f071ed (diff) | |
parent | b169b16f98eb2db92a227c1f7c43dab747a48326 (diff) | |
download | redot-engine-aeffa1cd106bc828d0f113ff600b9431fb624f72.tar.gz |
Merge pull request #16663 from sudoio/master
Fix #16543 (Add ability to copy errors from debugger)
Diffstat (limited to 'editor/script_editor_debugger.cpp')
-rw-r--r-- | editor/script_editor_debugger.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp index d0527a13ea..86ab84909e 100644 --- a/editor/script_editor_debugger.cpp +++ b/editor/script_editor_debugger.cpp @@ -193,6 +193,12 @@ public: } }; +void ScriptEditorDebugger::debug_copy() { + String msg = reason->get_text(); + if (msg == "") return; + OS::get_singleton()->set_clipboard(msg); +} + void ScriptEditorDebugger::debug_next() { ERR_FAIL_COND(!breaked); @@ -338,6 +344,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da step->set_disabled(!can_continue); next->set_disabled(!can_continue); _set_reason_text(error, MESSAGE_ERROR); + copy->set_disabled(false); breaked = true; dobreak->set_disabled(true); docontinue->set_disabled(false); @@ -354,6 +361,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da } else if (p_msg == "debug_exit") { breaked = false; + copy->set_disabled(true); step->set_disabled(true); next->set_disabled(true); reason->set_text(""); @@ -940,6 +948,8 @@ void ScriptEditorDebugger::_notification(int p_what) { inspector->edit(variables); + copy->set_icon(get_icon("Duplicate", "EditorIcons")); + step->set_icon(get_icon("DebugStep", "EditorIcons")); next->set_icon(get_icon("DebugNext", "EditorIcons")); back->set_icon(get_icon("Back", "EditorIcons")); @@ -1741,6 +1751,9 @@ void ScriptEditorDebugger::_item_menu_id_pressed(int p_option) { void ScriptEditorDebugger::_bind_methods() { ClassDB::bind_method(D_METHOD("_stack_dump_frame_selected"), &ScriptEditorDebugger::_stack_dump_frame_selected); + + ClassDB::bind_method(D_METHOD("debug_copy"), &ScriptEditorDebugger::debug_copy); + ClassDB::bind_method(D_METHOD("debug_next"), &ScriptEditorDebugger::debug_next); ClassDB::bind_method(D_METHOD("debug_step"), &ScriptEditorDebugger::debug_step); ClassDB::bind_method(D_METHOD("debug_break"), &ScriptEditorDebugger::debug_break); @@ -1816,6 +1829,13 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) { hbc->add_child(memnew(VSeparator)); + copy = memnew(ToolButton); + hbc->add_child(copy); + copy->set_tooltip(TTR("Copy Error")); + copy->connect("pressed", this, "debug_copy"); + + hbc->add_child(memnew(VSeparator)); + step = memnew(ToolButton); hbc->add_child(step); step->set_tooltip(TTR("Step Into")); |