InsetLabel::InsetLabel(Buffer * buf, InsetCommandParams const & p)
- : InsetCommand(buf, p, "label")
+ : InsetCommand(buf, p)
{}
for (; it != end; ++it) {
buffer().undo().recordUndo(it->second);
if (it->first->lyxCode() == MATH_REF_CODE) {
- InsetMathHull * mi =
- static_cast<InsetMathHull *>(it->first);
+ InsetMathHull * mi = it->first->asInsetMath()->asHullInset();
mi->asRefInset()->changeTarget(label);
} else {
- InsetCommand * ref =
- static_cast<InsetCommand *>(it->first);
+ InsetCommand * ref = it->first->asInsetCommand();
ref->setParam("reference", label);
}
}
}
buffer().undo().endUndoGroup();
-
- // We need an update of the Buffer reference cache. This is achieved by
- // updateBuffer().
- buffer().updateBuffer();
}
buffer().setInsetLabel(label, this);
screen_label_ = label;
- if (utype) {
+ if (utype == OutputUpdate) {
// save info on the active counter
Counters const & cnts =
buffer().masterBuffer()->params().documentClass().counters();
counter_value_ = cnts.theCounter(active_counter_, lang->code());
pretty_counter_ = cnts.prettyCounter(active_counter_, lang->code());
} else {
- counter_value_ = from_ascii("??");
- pretty_counter_ = from_ascii("??");
+ counter_value_ = from_ascii("#");
+ pretty_counter_ = from_ascii("#");
}
}
}
-void InsetLabel::addToToc(DocIterator const & cpit)
+void InsetLabel::addToToc(DocIterator const & cpit) const
{
docstring const & label = getParam("name");
Toc & toc = buffer().tocBackend().toc("label");
DocIterator const ref_pit(it->second);
if (it->first->lyxCode() == MATH_REF_CODE)
toc.push_back(TocItem(ref_pit, 1,
- static_cast<InsetMathHull *>(it->first)->asRefInset()
- ->screenLabel()));
+ it->first->asInsetMath()->asRefInset()->screenLabel()));
else
toc.push_back(TocItem(ref_pit, 1,
static_cast<InsetRef *>(it->first)->screenLabel()));
case LFUN_INSET_MODIFY: {
InsetCommandParams p(LABEL_CODE);
// FIXME UNICODE
- InsetCommand::string2params("label", to_utf8(cmd.argument()), p);
+ InsetCommand::string2params(to_utf8(cmd.argument()), p);
if (p.getCmdName().empty()) {
cur.noScreenUpdate();
break;
}
- if (p["name"] != params()["name"])
+ if (p["name"] != params()["name"]) {
+ // undo is handled in updateCommand
updateCommand(p["name"]);
+ }
+ cur.forceBufferUpdate();
break;
}
case LFUN_LABEL_INSERT_AS_REF: {
InsetCommandParams p(REF_CODE, "ref");
p["reference"] = getParam("name");
- string const data = InsetCommand::params2string("ref", p);
+ string const data = InsetCommand::params2string(p);
lyx::dispatch(FuncRequest(LFUN_INSET_INSERT, data));
break;
}