diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index 3f979f7c20a..b7c73261720 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -1452,15 +1452,14 @@ void LineEdit::undo() { return; } - if (undo_stack_pos == nullptr) { - if (undo_stack.size() <= 1) { - return; - } - undo_stack_pos = undo_stack.back(); - } else if (undo_stack_pos == undo_stack.front()) { + if (!has_undo()) { return; } + if (undo_stack_pos == nullptr) { + undo_stack_pos = undo_stack.back(); + } + deselect(); undo_stack_pos = undo_stack_pos->prev(); @@ -1479,10 +1478,7 @@ void LineEdit::redo() { return; } - if (undo_stack_pos == nullptr) { - return; - } - if (undo_stack_pos == undo_stack.back()) { + if (!has_redo()) { return; } diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 05e9b84bfa7..b8bb17eb2a6 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -4175,7 +4175,7 @@ void TextEdit::redo() { } _push_current_op(); - if (undo_stack_pos == nullptr) { + if (!has_redo()) { return; // Nothing to do. }