}
-void LyXText::Delete(LCursor & cur)
+bool LyXText::Delete(LCursor & cur)
{
BOOST_ASSERT(this == cur.text());
+ bool needsUpdate = false;
if (cur.pos() != cur.lastpos()) {
recordUndo(cur, Undo::DELETE, cur.pit());
setCursorIntern(cur, cur.pit(), cur.pos() + 1, false, cur.boundary());
- backspace(cur);
+ needsUpdate = backspace(cur);
} else if (cur.pit() != cur.lastpit()) {
LCursor scur = cur;
setCursorIntern(cur, cur.pit()+1, 0, false, false);
if (pars_[cur.pit()].layout() == pars_[scur.pit()].layout()) {
recordUndo(scur, Undo::DELETE, scur.pit());
- backspace(cur);
+ needsUpdate = backspace(cur);
} else {
setCursorIntern(scur, scur.pit(), scur.pos(), false, scur.boundary());
}
}
+ return needsUpdate;
}
-void LyXText::backspace(LCursor & cur)
+bool LyXText::backspace(LCursor & cur)
{
BOOST_ASSERT(this == cur.text());
+ bool needsUpdate = false;
if (cur.pos() == 0) {
// The cursor is at the beginning of a paragraph, so
// the the backspace will collapse two paragraphs into
// but it's not allowed unless it's new
Paragraph & par = cur.paragraph();
if (par.isChangeEdited(0, par.size()))
- return;
+ return false;
// we may paste some paragraphs
}
cursorLeft(cur);
- return;
+ return true;
}
}
|| pars_[tmppit].layout() == tclass.defaultLayout()))
{
mergeParagraph(bufparams, pars_, cpit);
+ needsUpdate = true;
if (cur.pos() != 0 && pars_[cpit].isSeparator(cur.pos() - 1))
--cur.pos();
setCurrentFont(cur);
setCursor(cur, cur.pit(), cur.pos(), false, cur.boundary());
+
+ return needsUpdate;
}
case LFUN_DELETE:
if (!cur.selection()) {
- Delete(cur);
+ needsUpdate = Delete(cur);
cur.resetAnchor();
// It is possible to make it a lot faster still
// just comment out the line below...
case LFUN_BACKSPACE:
if (!cur.selection()) {
if (bv->owner()->getIntl().getTransManager().backspace()) {
- backspace(cur);
+ needsUpdate = backspace(cur);
cur.resetAnchor();
// It is possible to make it a lot faster still
// just comment out the line below...