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());
 		}

Reply via email to