]> git.lyx.org Git - features.git/commitdiff
Fix DEPM at end of paragraph
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Wed, 30 Jan 2019 22:50:53 +0000 (23:50 +0100)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Wed, 30 Jan 2019 22:50:53 +0000 (23:50 +0100)
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.

src/Text2.cpp

index 356e4e8dd18bd29742c6458dfce32305a9b176c0..ae35fad0cdada74ba34708ea669e762f138fc644 100644 (file)
@@ -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;