}
-void TocWidget::doDispatch(Cursor const & cur, FuncRequest const & cmd)
+void TocWidget::doDispatch(Cursor & cur, FuncRequest const & cmd)
{
- switch(cmd.action) {
+ QModelIndex const & index = tocTV->currentIndex();
+ TocItem const & item =
+ gui_view_.tocModels().currentItem(current_type_, index);
+ DocIterator const & dit = item.dit();
- case LFUN_COPY_LABEL_AS_REF:
- case LFUN_INSERT_LABEL_AS_REF: {
- QModelIndex index = tocTV->currentIndex();
- TocItem const & item =
- gui_view_.tocModels().currentItem(current_type_, index);
- if (!item.str().empty()) {
- InsetCommandParams p(REF_CODE, "ref");
- p["reference"] = item.str();
- if (cmd.action == LFUN_COPY_LABEL_AS_REF) {
- cap::clearSelection();
- cap::copyInset(cur, new InsetRef(*cur.buffer(), p), item.str());
- } else {
- string const data = InsetCommand::params2string("ref", p);
- dispatch(FuncRequest(LFUN_INSET_INSERT, data));
- }
- }
- break;
- }
+ Inset * inset = 0;
+ if (current_type_ == "label")
+ inset = dit.nextInset();
- default:
- break;
- }
+ if (inset)
+ inset->dispatch(cur, FuncRequest(cmd));
}