1
0
Fork 0

Fix: marked text was not updated during text deletion

pull/11293/head
glx22 2023-09-13 17:37:56 +02:00
parent 9c49a61249
commit 89b0ea6cea
1 changed files with 13 additions and 6 deletions

View File

@ -247,14 +247,21 @@ void Textbuf::DeleteText(uint16_t from, uint16_t to, bool update)
this->bytes -= to - from; this->bytes -= to - from;
this->chars -= c; this->chars -= c;
/* Fixup caret if needed. */ auto fixup = [&](uint16_t &pos) {
if (this->caretpos > from) { if (pos <= from) return;
if (this->caretpos <= to) { if (pos <= to) {
this->caretpos = from; pos = from;
} else { } 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) { if (update) {
this->UpdateStringIter(); this->UpdateStringIter();