diff --git a/src/textbuf.cpp b/src/textbuf.cpp index 388e480211..2cffc81aeb 100644 --- a/src/textbuf.cpp +++ b/src/textbuf.cpp @@ -247,14 +247,21 @@ void Textbuf::DeleteText(uint16_t from, uint16_t to, bool update) this->bytes -= to - from; this->chars -= c; - /* Fixup caret if needed. */ - if (this->caretpos > from) { - if (this->caretpos <= to) { - this->caretpos = from; + auto fixup = [&](uint16_t &pos) { + if (pos <= from) return; + if (pos <= to) { + pos = from; } else { - this->caretpos -= to - from; + pos -= to - from; } - } + }; + + /* Fixup caret if needed. */ + fixup(this->caretpos); + + /* Fixup marked text if needed. */ + fixup(this->markpos); + fixup(this->markend); if (update) { this->UpdateStringIter();