+ setFocusProxy(tocTV);
+
+ // The toc types combo won't change its model.
+ typeCO->setModel(gui_view_.tocModels().nameModel());
+
+ // Make sure the buttons are disabled when first shown without a loaded
+ // Buffer.
+ enableControls(false);
+
+ // make us responsible for the context menu of the tabbar
+ setContextMenuPolicy(Qt::CustomContextMenu);
+ connect(this, SIGNAL(customContextMenuRequested(const QPoint &)),
+ this, SLOT(showContextMenu(const QPoint &)));
+ connect(tocTV, SIGNAL(customContextMenuRequested(const QPoint &)),
+ this, SLOT(showContextMenu(const QPoint &)));
+ connect(filterLE, SIGNAL(textEdited(QString)),
+ this, SLOT(filterContents()));
+
+ init(QString());
+}
+
+
+void TocWidget::showContextMenu(const QPoint & pos)
+{
+ std::string name = "context-toc-" + fromqstr(current_type_);
+ QMenu * menu = guiApp->menus().menu(toqstr(name), gui_view_);
+ if (!menu)
+ return;
+ menu->exec(mapToGlobal(pos));
+}
+
+
+Inset * TocWidget::itemInset() const
+{
+ QModelIndex const & index = tocTV->currentIndex();
+ TocItem const & item =
+ gui_view_.tocModels().currentItem(current_type_, index);
+ DocIterator const & dit = item.dit();
+
+ Inset * inset = 0;
+ if (current_type_ == "label"
+ || current_type_ == "graphics"
+ || current_type_ == "citation"
+ || current_type_ == "child")
+ inset = dit.nextInset();
+
+ else if (current_type_ == "branch"
+ || current_type_ == "index"
+ || current_type_ == "change")
+ inset = &dit.inset();
+
+ else if (current_type_ == "table"
+ || current_type_ == "listing"
+ || current_type_ == "figure") {
+ DocIterator tmp_dit(dit);
+ tmp_dit.pop_back();
+ inset = &tmp_dit.inset();
+ }
+ return inset;