Juergen Spitzmueller wrote: > [1] there's one minor issue that I haven't reported yet. With the patch, my > "move cursor while deleting in change tracking mode" fix is limited in that > it now "hangs" at paragraph breaks. But this can be fixed later.
The attached patch fixes that. I think it could also go in 1.4.1. What do you think? Jürgen
Index: src/text.C =================================================================== --- src/text.C (Revision 13492) +++ src/text.C (Arbeitskopie) @@ -1579,17 +1579,21 @@ bool LyXText::Delete(LCursor & cur) recordUndo(cur, Undo::DELETE, cur.pit()); setCursorIntern(cur, cur.pit(), cur.pos() + 1, false, cur.boundary()); needsUpdate = backspace(cur); - Paragraph & par = cur.paragraph(); - if (cur.pos() < par.size() - && par.lookupChange(cur.pos()) == Change::DELETED) + if (cur.paragraph().lookupChange(cur.pos()) == Change::DELETED) cur.posRight(); } else if (cur.pit() != cur.lastpit()) { LCursor scur = cur; - setCursorIntern(cur, cur.pit()+1, 0, false, false); + setCursorIntern(cur, cur.pit() + 1, 0, false, false); if (pars_[cur.pit()].layout() == pars_[scur.pit()].layout()) { recordUndo(scur, Undo::DELETE, scur.pit()); needsUpdate = backspace(cur); + if (cur.buffer().params().tracking_changes) { + // move forward after the paragraph break is DELETED + Paragraph & par = cur.paragraph(); + if (par.lookupChange(par.size()) == Change::DELETED) + setCursorIntern(cur, cur.pit() + 1, 0); + } } else { setCursorIntern(scur, scur.pit(), scur.pos(), false, scur.boundary()); }