From: Jean-Marc Lasgouttes Date: Wed, 30 Jan 2019 22:50:53 +0000 (+0100) Subject: Fix DEPM at end of paragraph X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=99e129a7b635966a5549193f405d7d4902837466;p=features.git Fix DEPM at end of paragraph Remove special handling of spaces at end of paragraph. Now they are handled like interword spaces by both DEPM methods. Fix off-by-one error in loop when testing for end of paragraph. Style: use Dociterator::lastpos() instead of Paragraph::size(). Part of bug #11412. --- diff --git a/src/Text2.cpp b/src/Text2.cpp index 356e4e8dd1..ae35fad0cd 100644 --- a/src/Text2.cpp +++ b/src/Text2.cpp @@ -857,15 +857,14 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur, && !oldpar.isDeleted(from - 1)) --from; pos_type to = old.pos(); - while (to < oldpar.size() - 1 + while (to < old.lastpos() && oldpar.isLineSeparator(to) && !oldpar.isDeleted(to)) ++to; int num_spaces = to - from; - - // If we are not at the extremity of the paragraph, keep one space - if (from != to && from > 0 && to < oldpar.size()) + // If we are not at the start of the paragraph, keep one space + if (from != to && from > 0) --num_spaces; // If cursor is inside range, keep one additional space @@ -874,14 +873,14 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur, // Remove spaces and adapt cursor. if (num_spaces > 0) { - pos_type const oldsize = oldpar.size(); + pos_type const oldlast = old.lastpos(); deleteSpaces(oldpar, from, to, num_spaces, cur.buffer()->params().track_changes); // correct cur position // FIXME: there can be other cursors pointing there, we should update them if (same_par) { if (cur[depth].pos() >= to) - cur[depth].pos() -= oldsize - oldpar.size(); + cur[depth].pos() -= oldlast - old.lastpos(); else if (cur[depth].pos() > from) cur[depth].pos() = min(from + 1, old.lastpos()); need_anchor_change = true;