diff --git a/Userland/Applications/TextEditor/MainWidget.cpp b/Userland/Applications/TextEditor/MainWidget.cpp index 76b638b755..aa506060a3 100644 --- a/Userland/Applications/TextEditor/MainWidget.cpp +++ b/Userland/Applications/TextEditor/MainWidget.cpp @@ -157,16 +157,18 @@ MainWidget::MainWidget() m_replace_all_action = GUI::Action::create("Replace &All", { Mod_Ctrl, Key_F2 }, [&](auto&) { auto needle = m_find_textbox->text(); auto substitute = m_replace_textbox->text(); + auto length_delta = substitute.length() - needle.length(); if (needle.is_empty()) return; if (m_use_regex) m_editor->document().update_regex_matches(needle); - auto found_range = m_editor->document().find_next(needle, {}, GUI::TextDocument::SearchShouldWrap::Yes, m_use_regex, m_match_case); + auto found_range = m_editor->document().find_next(needle, {}, GUI::TextDocument::SearchShouldWrap::No, m_use_regex, m_match_case); while (found_range.is_valid()) { m_editor->set_selection(found_range); m_editor->insert_at_cursor_or_replace_selection(substitute); - found_range = m_editor->document().find_next(needle, {}, GUI::TextDocument::SearchShouldWrap::Yes, m_use_regex, m_match_case); + auto next_start = GUI::TextPosition(found_range.end().line(), found_range.end().column() + length_delta); + found_range = m_editor->document().find_next(needle, next_start, GUI::TextDocument::SearchShouldWrap::No, m_use_regex, m_match_case); } });