From: Jürgen Vigna Date: Fri, 4 Jan 2002 16:03:53 +0000 (+0000) Subject: Another fix to Undo/Redo code I hope we get nearer to perfection ;) X-Git-Tag: 1.6.10~20089 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=de78a7b2d67e90c70ecb23984d3298c385faa65d;p=features.git Another fix to Undo/Redo code I hope we get nearer to perfection ;) git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3296 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/BufferView2.C b/src/BufferView2.C index af1326aa03..cf53e9b2ee 100644 --- a/src/BufferView2.C +++ b/src/BufferView2.C @@ -437,6 +437,7 @@ bool BufferView::lockInset(UpdatableInset * inset) par->inset_iterator_end(); for (; it != end; ++it) { if ((*it) == inset) { + text->setCursorIntern(this, par, it.getPos()); theLockingInset(inset); return true; } diff --git a/src/ChangeLog b/src/ChangeLog index 1551469e02..259603b7e8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2002-01-04 Juergen Vigna + + * BufferView2.C (lockInset): forgot to set a cursor. + + * lyxfunc.C (dispatch): add a finishUndo() in LFUN_ESCAPE. + 2002-01-03 Martin Vermeer * FormMathsPanel.C: diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 5630c00d2a..35430b7480 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,12 @@ +2002-01-04 Juergen Vigna + + * insettext.C (lockInsetInInset): forgot to set a cursor. + +2002-01-02 Juergen Vigna + + * insettext.C (insertInset): make the correct undo informations on + inserting new insets. + 2001-12-31 John Levon * insettabular.C: correct single-cell select vertically diff --git a/src/insets/insettext.C b/src/insets/insettext.C index 9a7a228112..ba4966ab23 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -784,6 +784,7 @@ bool InsetText::lockInsetInInset(BufferView * bv, UpdatableInset * inset) return true; } if ((*it)->getInsetFromID(id)) { + getLyXText(bv)->setCursorIntern(bv, p, it.getPos()); lockInset(bv, static_cast(*it)); return the_locking_inset->lockInsetInInset(bv, inset); } @@ -814,7 +815,7 @@ bool InsetText::lockInsetInInset(BufferView * bv, UpdatableInset * inset) bool InsetText::unlockInsetInInset(BufferView * bv, UpdatableInset * inset, - bool lr) + bool lr) { if (!the_locking_inset) return false; @@ -1810,19 +1811,21 @@ bool InsetText::insertInset(BufferView * bv, Inset * inset) return the_locking_inset->insertInset(bv, inset); return false; } - inset->setOwner(this); - hideInsetCursor(bv); - bool clear = false; if (!lt) { lt = getLyXText(bv); clear = true; } + setUndo(bv, Undo::FINISH, lt->cursor.par(), lt->cursor.par()->next()); + freezeUndo(); + inset->setOwner(this); + hideInsetCursor(bv); lt->insertInset(bv, inset); bv->fitCursor(); if (clear) lt = 0; updateLocal(bv, CURSOR_PAR|CURSOR, true); + unFreezeUndo(); return true; } diff --git a/src/lyxfunc.C b/src/lyxfunc.C index 34eaec042e..0456ef8bd1 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -930,7 +930,6 @@ string const LyXFunc::dispatch(int ac, case LFUN_ESCAPE: { if (!owner->view()->available()) break; - // this function should be used always [asierra060396] UpdatableInset * tli = owner->view()->theLockingInset(); @@ -947,6 +946,7 @@ string const LyXFunc::dispatch(int ac, lock, true); } + finishUndo(); } } break; diff --git a/src/text2.C b/src/text2.C index e86a6e6cf4..19ad0bdc1d 100644 --- a/src/text2.C +++ b/src/text2.C @@ -1684,8 +1684,8 @@ void LyXText::insertInset(BufferView * bview, Inset * inset) { if (!cursor.par()->insetAllowed(inset->lyxCode())) return; - setUndo(bview, Undo::INSERT, - cursor.par(), cursor.par()->next()); + // I don't know if this is necessary here (Jug 20020102) + setUndo(bview, Undo::INSERT, cursor.par(), cursor.par()->next()); cursor.par()->insertInset(cursor.pos(), inset); // Just to rebreak and refresh correctly. // The character will not be inserted a second time