mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-18 05:37:11 +00:00
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.
This commit is contained in:
parent
7e120159fc
commit
c00234503f
@ -857,15 +857,14 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur,
|
|||||||
&& !oldpar.isDeleted(from - 1))
|
&& !oldpar.isDeleted(from - 1))
|
||||||
--from;
|
--from;
|
||||||
pos_type to = old.pos();
|
pos_type to = old.pos();
|
||||||
while (to < oldpar.size() - 1
|
while (to < old.lastpos()
|
||||||
&& oldpar.isLineSeparator(to)
|
&& oldpar.isLineSeparator(to)
|
||||||
&& !oldpar.isDeleted(to))
|
&& !oldpar.isDeleted(to))
|
||||||
++to;
|
++to;
|
||||||
|
|
||||||
int num_spaces = to - from;
|
int num_spaces = to - from;
|
||||||
|
// If we are not at the start of the paragraph, keep one space
|
||||||
// If we are not at the extremity of the paragraph, keep one space
|
if (from != to && from > 0)
|
||||||
if (from != to && from > 0 && to < oldpar.size())
|
|
||||||
--num_spaces;
|
--num_spaces;
|
||||||
|
|
||||||
// If cursor is inside range, keep one additional space
|
// If cursor is inside range, keep one additional space
|
||||||
@ -874,14 +873,14 @@ bool Text::deleteEmptyParagraphMechanism(Cursor & cur,
|
|||||||
|
|
||||||
// Remove spaces and adapt cursor.
|
// Remove spaces and adapt cursor.
|
||||||
if (num_spaces > 0) {
|
if (num_spaces > 0) {
|
||||||
pos_type const oldsize = oldpar.size();
|
pos_type const oldlast = old.lastpos();
|
||||||
deleteSpaces(oldpar, from, to, num_spaces,
|
deleteSpaces(oldpar, from, to, num_spaces,
|
||||||
cur.buffer()->params().track_changes);
|
cur.buffer()->params().track_changes);
|
||||||
// correct cur position
|
// correct cur position
|
||||||
// FIXME: there can be other cursors pointing there, we should update them
|
// FIXME: there can be other cursors pointing there, we should update them
|
||||||
if (same_par) {
|
if (same_par) {
|
||||||
if (cur[depth].pos() >= to)
|
if (cur[depth].pos() >= to)
|
||||||
cur[depth].pos() -= oldsize - oldpar.size();
|
cur[depth].pos() -= oldlast - old.lastpos();
|
||||||
else if (cur[depth].pos() > from)
|
else if (cur[depth].pos() > from)
|
||||||
cur[depth].pos() = min(from + 1, old.lastpos());
|
cur[depth].pos() = min(from + 1, old.lastpos());
|
||||||
need_anchor_change = true;
|
need_anchor_change = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user