From e68b171aaa4ee968d42e847bdcd2ddd22abd5502 Mon Sep 17 00:00:00 2001 From: kobewi Date: Fri, 26 Sep 2025 21:38:12 +0200 Subject: [PATCH] Fix Script editor state types --- editor/gui/code_editor.cpp | 18 +++++++++--------- scene/gui/code_edit.cpp | 14 ++++++++++++-- scene/gui/code_edit.h | 3 ++- tests/scene/test_code_edit.h | 3 +++ 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/editor/gui/code_editor.cpp b/editor/gui/code_editor.cpp index 779bdd29e40..6bd77966a45 100644 --- a/editor/gui/code_editor.cpp +++ b/editor/gui/code_editor.cpp @@ -1466,23 +1466,23 @@ void CodeTextEditor::set_edit_state(const Variant &p_state) { } if (state.has("folded_lines")) { - Vector folded_lines = state["folded_lines"]; - for (int i = 0; i < folded_lines.size(); i++) { - text_editor->fold_line(folded_lines[i]); + const PackedInt32Array folded_lines = state["folded_lines"]; + for (const int &line : folded_lines) { + text_editor->fold_line(line); } } if (state.has("breakpoints")) { - Array breakpoints = state["breakpoints"]; - for (int i = 0; i < breakpoints.size(); i++) { - text_editor->set_line_as_breakpoint(breakpoints[i], true); + const PackedInt32Array breakpoints = state["breakpoints"]; + for (const int &line : breakpoints) { + text_editor->set_line_as_breakpoint(line, true); } } if (state.has("bookmarks")) { - Array bookmarks = state["bookmarks"]; - for (int i = 0; i < bookmarks.size(); i++) { - text_editor->set_line_as_bookmarked(bookmarks[i], true); + const PackedInt32Array bookmarks = state["bookmarks"]; + for (const int &line : bookmarks) { + text_editor->set_line_as_bookmarked(line, true); } } diff --git a/scene/gui/code_edit.cpp b/scene/gui/code_edit.cpp index 5cfd74d07b6..60bda05d842 100644 --- a/scene/gui/code_edit.cpp +++ b/scene/gui/code_edit.cpp @@ -1868,7 +1868,7 @@ bool CodeEdit::is_line_folded(int p_line) const { return p_line + 1 < get_line_count() && !_is_line_hidden(p_line) && _is_line_hidden(p_line + 1); } -TypedArray CodeEdit::get_folded_lines() const { +TypedArray CodeEdit::get_folded_lines_bind() const { TypedArray folded_lines; for (int i = 0; i < get_line_count(); i++) { if (is_line_folded(i)) { @@ -1878,6 +1878,16 @@ TypedArray CodeEdit::get_folded_lines() const { return folded_lines; } +PackedInt32Array CodeEdit::get_folded_lines() const { + PackedInt32Array folded_lines; + for (int i = 0; i < get_line_count(); i++) { + if (is_line_folded(i)) { + folded_lines.push_back(i); + } + } + return folded_lines; +} + /* Code region */ void CodeEdit::create_code_region() { // Abort if there is no selected text. @@ -2805,7 +2815,7 @@ void CodeEdit::_bind_methods() { ClassDB::bind_method(D_METHOD("toggle_foldable_lines_at_carets"), &CodeEdit::toggle_foldable_lines_at_carets); ClassDB::bind_method(D_METHOD("is_line_folded", "line"), &CodeEdit::is_line_folded); - ClassDB::bind_method(D_METHOD("get_folded_lines"), &CodeEdit::get_folded_lines); + ClassDB::bind_method(D_METHOD("get_folded_lines"), &CodeEdit::get_folded_lines_bind); /* Code region */ ClassDB::bind_method(D_METHOD("create_code_region"), &CodeEdit::create_code_region); diff --git a/scene/gui/code_edit.h b/scene/gui/code_edit.h index 72e48f25ed4..da565c6ff26 100644 --- a/scene/gui/code_edit.h +++ b/scene/gui/code_edit.h @@ -432,7 +432,8 @@ public: int get_folded_line_header(int p_line) const; bool is_line_folded(int p_line) const; - TypedArray get_folded_lines() const; + TypedArray get_folded_lines_bind() const; + PackedInt32Array get_folded_lines() const; /* Code region */ void create_code_region(); diff --git a/tests/scene/test_code_edit.h b/tests/scene/test_code_edit.h index 9ea995aeaa0..a5ce805388f 100644 --- a/tests/scene/test_code_edit.h +++ b/tests/scene/test_code_edit.h @@ -2974,7 +2974,9 @@ TEST_CASE("[SceneTree][CodeEdit] folding") { // Check metadata. CHECK(code_edit->get_folded_lines().size() == 1); + CHECK(code_edit->get_folded_lines_bind().size() == 1); CHECK((int)code_edit->get_folded_lines()[0] == 0); + CHECK((int)code_edit->get_folded_lines_bind()[0] == 0); // Cannot unfold nested. code_edit->unfold_line(1); @@ -2990,6 +2992,7 @@ TEST_CASE("[SceneTree][CodeEdit] folding") { // Check metadata. CHECK(code_edit->get_folded_lines().size() == 0); + CHECK(code_edit->get_folded_lines_bind().size() == 0); code_edit->fold_all_lines(); CHECK(code_edit->is_line_folded(0));