mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-29 13:04:58 +00:00
Redo 25580 the right way, again :-)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25618 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
a282ef926a
commit
0f7bae394c
34
src/Undo.cpp
34
src/Undo.cpp
@ -73,8 +73,31 @@ struct UndoElement
|
|||||||
MathData * ar, BufferParams const & bp,
|
MathData * ar, BufferParams const & bp,
|
||||||
bool ifb) :
|
bool ifb) :
|
||||||
kind(kin), cursor(cur), cell(cel), from(fro), end(en),
|
kind(kin), cursor(cur), cell(cel), from(fro), end(en),
|
||||||
pars(pl), array(ar), bparams(bp), isFullBuffer(ifb)
|
pars(pl), array(ar), bparams(0), isFullBuffer(ifb)
|
||||||
{}
|
{
|
||||||
|
if (isFullBuffer)
|
||||||
|
bparams = new BufferParams(bp);
|
||||||
|
}
|
||||||
|
///
|
||||||
|
UndoElement(UndoElement const & ue)
|
||||||
|
{
|
||||||
|
kind = ue.kind;
|
||||||
|
cursor = ue.cursor;
|
||||||
|
cell = ue.cell;
|
||||||
|
from = ue.from;
|
||||||
|
end = ue.end;
|
||||||
|
pars = ue.pars;
|
||||||
|
array = ue.array;
|
||||||
|
bparams = ue.isFullBuffer
|
||||||
|
? new BufferParams(*ue.bparams) : ue.bparams;
|
||||||
|
isFullBuffer = ue.isFullBuffer;
|
||||||
|
}
|
||||||
|
///
|
||||||
|
~UndoElement()
|
||||||
|
{
|
||||||
|
if (isFullBuffer)
|
||||||
|
delete bparams;
|
||||||
|
}
|
||||||
/// Which kind of operation are we recording for?
|
/// Which kind of operation are we recording for?
|
||||||
UndoKind kind;
|
UndoKind kind;
|
||||||
/// the position of the cursor
|
/// the position of the cursor
|
||||||
@ -90,7 +113,7 @@ struct UndoElement
|
|||||||
/// the contents of the saved MathData (for mathed)
|
/// the contents of the saved MathData (for mathed)
|
||||||
MathData * array;
|
MathData * array;
|
||||||
/// Only used in case of full backups
|
/// Only used in case of full backups
|
||||||
BufferParams bparams;
|
BufferParams const * bparams;
|
||||||
/// Only used in case of full backups
|
/// Only used in case of full backups
|
||||||
bool isFullBuffer;
|
bool isFullBuffer;
|
||||||
private:
|
private:
|
||||||
@ -322,8 +345,9 @@ bool Undo::Private::textUndoOrRedo(DocIterator & cur, bool isUndoOperation)
|
|||||||
if (undo.isFullBuffer) {
|
if (undo.isFullBuffer) {
|
||||||
LASSERT(undo.pars, /**/);
|
LASSERT(undo.pars, /**/);
|
||||||
// This is a full document
|
// This is a full document
|
||||||
otherstack.top().bparams = buffer_.params();
|
delete otherstack.top().bparams;
|
||||||
buffer_.params() = undo.bparams;
|
otherstack.top().bparams = new BufferParams(buffer_.params());
|
||||||
|
buffer_.params() = *undo.bparams;
|
||||||
swap(buffer_.paragraphs(), *undo.pars);
|
swap(buffer_.paragraphs(), *undo.pars);
|
||||||
delete undo.pars;
|
delete undo.pars;
|
||||||
undo.pars = 0;
|
undo.pars = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user