Try to finally fix #6930. All the paths that did not come from context

menus were (intentionally) missing, and it turns out they were needed.

Normally all invocations of INSET_MODIFY should trigger a recordUndo now.
Of course all cases have not been tested, but it should be working.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36770 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2010-12-08 09:24:04 +00:00
parent 4ae901ee70
commit 838af80834
18 changed files with 27 additions and 5 deletions

View File

@ -122,6 +122,9 @@ void InsetBibitem::doDispatch(Cursor & cur, FuncRequest & cmd)
cur.noScreenUpdate();
break;
}
cur.recordUndo();
docstring const & old_key = params()["key"];
docstring const & old_label = params()["label"];
docstring label = p["label"];

View File

@ -103,7 +103,8 @@ void InsetBibtex::doDispatch(Cursor & cur, FuncRequest & cmd)
throw message;
break;
}
//
cur.recordUndo();
setParams(p);
buffer().invalidateBibfileCache();
cur.forceBufferUpdate();

View File

@ -192,8 +192,8 @@ void InsetBox::doDispatch(Cursor & cur, FuncRequest & cmd)
case LFUN_INSET_MODIFY: {
//lyxerr << "InsetBox::dispatch MODIFY" << endl;
if (cmd.getArg(0) == "changetype") {
cur.recordUndoInset(ATOMIC_UNDO, this);
if (cmd.getArg(0) == "changetype") {
params_.type = cmd.getArg(1);
} else
string2params(to_utf8(cmd.argument()), params_);

View File

@ -116,6 +116,8 @@ void InsetBranch::doDispatch(Cursor & cur, FuncRequest & cmd)
case LFUN_INSET_MODIFY: {
InsetBranchParams params;
InsetBranch::string2params(to_utf8(cmd.argument()), params);
cur.recordUndoInset(ATOMIC_UNDO, this);
params_.branch = params.branch;
// what we really want here is a TOC update, but that means
// a full buffer update

View File

@ -156,8 +156,10 @@ void InsetCommand::doDispatch(Cursor & cur, FuncRequest & cmd)
InsetCommand::string2params(to_utf8(cmd.argument()), p);
if (p.getCmdName().empty())
cur.noScreenUpdate();
else
else {
cur.recordUndo();
setParams(p);
}
// FIXME We might also want to check here if this one is in the TOC.
// But I think most of those are labeled.
if (isLabeled())

View File

@ -114,6 +114,7 @@ void InsetERT::doDispatch(Cursor & cur, FuncRequest & cmd)
switch (cmd.action()) {
case LFUN_INSET_MODIFY:
if (cmd.getArg(0) == "ert") {
cur.recordUndoInset(ATOMIC_UNDO, this);
setStatus(cur, string2params(to_utf8(cmd.argument())));
break;
}

View File

@ -420,6 +420,7 @@ void InsetExternal::doDispatch(Cursor & cur, FuncRequest & cmd)
case LFUN_INSET_MODIFY: {
InsetExternalParams p;
string2params(to_utf8(cmd.argument()), buffer(), p);
cur.recordUndo();
setParams(p);
break;
}

View File

@ -142,6 +142,7 @@ void InsetFloat::doDispatch(Cursor & cur, FuncRequest & cmd)
case LFUN_INSET_MODIFY: {
InsetFloatParams params;
string2params(to_utf8(cmd.argument()), params);
cur.recordUndoInset(ATOMIC_UNDO, this);
// placement, wide and sideways are not used for subfloats
if (!params_.subfloat) {

View File

@ -210,6 +210,7 @@ void InsetGraphics::doDispatch(Cursor & cur, FuncRequest & cmd)
break;
}
cur.recordUndo();
setParams(p);
// if the inset is part of a graphics group, all the
// other members should be updated too.

View File

@ -277,6 +277,7 @@ void InsetInclude::doDispatch(Cursor & cur, FuncRequest & cmd)
}
}
}
cur.recordUndo();
setParams(p);
cur.forceBufferUpdate();
} else

View File

@ -213,6 +213,7 @@ void InsetIndex::doDispatch(Cursor & cur, FuncRequest & cmd)
}
InsetIndexParams params;
InsetIndex::string2params(to_utf8(cmd.argument()), params);
cur.recordUndoInset(ATOMIC_UNDO, this);
params_.index = params.index;
// what we really want here is a TOC update, but that means
// a full buffer update

View File

@ -196,8 +196,10 @@ void InsetLabel::doDispatch(Cursor & cur, FuncRequest & cmd)
cur.noScreenUpdate();
break;
}
if (p["name"] != params()["name"])
if (p["name"] != params()["name"]) {
// undo is handled in updateCommand
updateCommand(p["name"]);
}
cur.forceBufferUpdate();
break;
}

View File

@ -77,6 +77,7 @@ void InsetLine::doDispatch(Cursor & cur, FuncRequest & cmd)
cur.noScreenUpdate();
break;
}
cur.recordUndo();
setParams(p);
break;
}

View File

@ -320,6 +320,7 @@ void InsetListings::doDispatch(Cursor & cur, FuncRequest & cmd)
switch (cmd.action()) {
case LFUN_INSET_MODIFY: {
cur.recordUndoInset(ATOMIC_UNDO, this);
InsetListings::string2params(to_utf8(cmd.argument()), params());
break;
}

View File

@ -175,6 +175,8 @@ void InsetPrintNomencl::doDispatch(Cursor & cur, FuncRequest & cmd)
cur.noScreenUpdate();
break;
}
cur.recordUndo();
setParams(p);
break;
}

View File

@ -5114,7 +5114,7 @@ void InsetTabular::tabularFeatures(Cursor & cur,
break;
}
cur.recordUndoInset(ATOMIC_UNDO);
cur.recordUndoInset(ATOMIC_UNDO, this);
getSelection(cur, sel_row_start, sel_row_end, sel_col_start, sel_col_end);
row_type const row = tabular.cellRow(cur.idx());

View File

@ -80,6 +80,7 @@ void InsetWrap::doDispatch(Cursor & cur, FuncRequest & cmd)
{
switch (cmd.action()) {
case LFUN_INSET_MODIFY: {
cur.recordUndoInset(ATOMIC_UNDO, this);
InsetWrapParams params;
InsetWrap::string2params(to_utf8(cmd.argument()), params);
params_.lines = params.lines;

View File

@ -66,6 +66,7 @@ void InsetMathRef::doDispatch(Cursor & cur, FuncRequest & cmd)
if (cmd.getArg(0) == "ref") {
MathData ar;
if (createInsetMath_fromDialogStr(cmd.argument(), ar)) {
cur.recordUndo();
*this = *ar[0].nucleus()->asRefInset();
break;
}