mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 11:16:55 +00:00
Fix undo of entering \hline
It was broken with 6d75800f5d
as noticed by Enrico. The fix is to use undo
groups (thanks Jean-Marc).
This commit is contained in:
parent
7c5f28ad26
commit
1fa39e1f95
@ -1599,8 +1599,11 @@ bool Cursor::macroModeClose()
|
||||
|
||||
docstring const name = s.substr(1);
|
||||
InsetMathNest * const in = inset().asInsetMath()->asNestInset();
|
||||
if (in && in->interpretString(*this, s))
|
||||
if (in && in->interpretString(*this, s)) {
|
||||
// end undo group that was opened before in was created
|
||||
endUndoGroup();
|
||||
return true;
|
||||
}
|
||||
MathAtom atom = buffer()->getMacro(name, *this, false) ?
|
||||
MathAtom(new MathMacro(buffer(), name)) : createInsetMath(name, buffer());
|
||||
|
||||
@ -1634,6 +1637,8 @@ bool Cursor::macroModeClose()
|
||||
insert(selection);
|
||||
}
|
||||
|
||||
// end undo group that was opened before in was created
|
||||
endUndoGroup();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -184,6 +184,7 @@ bool InsetMathGrid::interpretString(Cursor & cur, docstring const & str)
|
||||
FuncStatus status;
|
||||
if (getStatus(cur, fr, status)) {
|
||||
if (status.enabled()) {
|
||||
cur.recordUndoInset();
|
||||
rowinfo_[cur.row()].lines_++;
|
||||
return true;
|
||||
}
|
||||
|
@ -848,10 +848,14 @@ void InsetMathNest::doDispatch(Cursor & cur, FuncRequest & cmd)
|
||||
|
||||
case LFUN_SELF_INSERT:
|
||||
if (cmd.argument().size() != 1) {
|
||||
// use a group because interpretString() might
|
||||
// record an extra undo step
|
||||
cur.beginUndoGroup();
|
||||
cur.recordUndoSelection();
|
||||
docstring const arg = cmd.argument();
|
||||
if (!interpretString(cur, arg))
|
||||
cur.insert(arg);
|
||||
cur.endUndoGroup();
|
||||
break;
|
||||
}
|
||||
// Don't record undo steps if we are in macro mode and thus
|
||||
@ -1663,6 +1667,8 @@ bool InsetMathNest::interpretChar(Cursor & cur, char_type const c)
|
||||
cur.cell().erase(cur.pos());
|
||||
cur.plainInsert(MathAtom(
|
||||
new InsetMathBig(name.substr(1), delim)));
|
||||
// end undo group that was opened before p was created
|
||||
cur.endUndoGroup();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -1706,9 +1712,12 @@ bool InsetMathNest::interpretChar(Cursor & cur, char_type const c)
|
||||
bool reduced = cap::reduceSelectionToOneCell(cur);
|
||||
if (reduced || !cur.selection()) {
|
||||
docstring const safe = cap::grabAndEraseSelection(cur);
|
||||
if (!cur.inRegexped())
|
||||
if (!cur.inRegexped()) {
|
||||
// open a group because interpretString() might
|
||||
// record an extra undo step when finalizing
|
||||
cur.beginUndoGroup();
|
||||
cur.insert(MathAtom(new InsetMathUnknown(from_ascii("\\"), safe, false)));
|
||||
else
|
||||
} else
|
||||
cur.niceInsert(createInsetMath("backslash", buf));
|
||||
}
|
||||
return true;
|
||||
|
@ -28,8 +28,6 @@
|
||||
#include "CoordCache.h"
|
||||
#include "Cursor.h"
|
||||
|
||||
#include "mathed/InsetMathUnknown.h"
|
||||
|
||||
#include "support/debug.h"
|
||||
#include "support/docstream.h"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user