Skip to content

Commit db50035

Browse files
committed
Merge pull request #89554 from smnast/backspace-unfold
Fix backspace always unfolding previous line
2 parents 8093339 + 2860b99 commit db50035

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

scene/gui/code_edit.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ void CodeEdit::_backspace_internal(int p_caret) {
765765
continue;
766766
}
767767

768-
if (to_line > 0 && _is_line_hidden(to_line - 1)) {
768+
if (to_line > 0 && to_column == 0 && _is_line_hidden(to_line - 1)) {
769769
unfold_line(to_line - 1);
770770
}
771771

tests/scene/test_code_edit.h

+20
Original file line numberDiff line numberDiff line change
@@ -4609,6 +4609,26 @@ TEST_CASE("[SceneTree][CodeEdit] text manipulation") {
46094609
CHECK(code_edit->get_text() == "line 1\nline 2\nline 3");
46104610
CHECK(code_edit->get_caret_line() == 0);
46114611
CHECK(code_edit->get_caret_column() == 0);
4612+
4613+
// Unfold previous folded line on backspace if the caret is at the first column.
4614+
code_edit->set_line_folding_enabled(true);
4615+
code_edit->set_text("line 1\n\tline 2\nline 3");
4616+
code_edit->set_caret_line(2);
4617+
code_edit->set_caret_column(0);
4618+
code_edit->fold_line(0);
4619+
code_edit->backspace();
4620+
CHECK_FALSE(code_edit->is_line_folded(0));
4621+
code_edit->set_line_folding_enabled(false);
4622+
4623+
// Do not unfold previous line on backspace if the caret is not at the first column.
4624+
code_edit->set_line_folding_enabled(true);
4625+
code_edit->set_text("line 1\n\tline 2\nline 3");
4626+
code_edit->set_caret_line(2);
4627+
code_edit->set_caret_column(4);
4628+
code_edit->fold_line(0);
4629+
code_edit->backspace();
4630+
CHECK(code_edit->is_line_folded(0));
4631+
code_edit->set_line_folding_enabled(false);
46124632
}
46134633

46144634
SUBCASE("[TextEdit] cut") {

0 commit comments

Comments
 (0)