From ed69fd66da1752ccc4da50e66551be0bb2c4c92d Mon Sep 17 00:00:00 2001 From: SaNeOr Date: Fri, 13 Sep 2024 01:50:39 +0800 Subject: [PATCH] fix: Editor, save script file: Triple quote string: spaces are converted into tabs --- scene/gui/code_edit.cpp | 4 ++++ tests/scene/test_code_edit.h | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/scene/gui/code_edit.cpp b/scene/gui/code_edit.cpp index c3287035ffc..79eabd0a4bd 100644 --- a/scene/gui/code_edit.cpp +++ b/scene/gui/code_edit.cpp @@ -1007,6 +1007,10 @@ void CodeEdit::convert_indent(int p_from_line, int p_to_line) { continue; } + if (is_in_string(i) != -1) { + continue; + } + // Check chars in the line. int j = 0; int space_count = 0; diff --git a/tests/scene/test_code_edit.h b/tests/scene/test_code_edit.h index 9ec1b812dfc..a1da4dec1eb 100644 --- a/tests/scene/test_code_edit.h +++ b/tests/scene/test_code_edit.h @@ -2831,6 +2831,16 @@ TEST_CASE("[SceneTree][CodeEdit] indent") { CHECK(code_edit->has_selection()); CHECK(code_edit->get_selection_origin_column() == 2); CHECK(code_edit->get_caret_column() == 3); + + // Multiline blocks. + code_edit->set_text("'''\n test\n test\n'''"); + code_edit->select(1, 0, 1, 8); + code_edit->convert_indent(); + CHECK(code_edit->get_line(1) == " test"); + CHECK(code_edit->get_line(2) == " test"); + CHECK(code_edit->has_selection()); + CHECK(code_edit->get_selection_origin_column() == 0); + CHECK(code_edit->get_caret_column() == 8); } SUBCASE("[CodeEdit] convert indent to spaces") {