]> git.lyx.org Git - features.git/blobdiff - src/frontends/qt/TocWidget.cpp
Show suggestions containing the input in the command buffer
[features.git] / src / frontends / qt / TocWidget.cpp
index 483f0084266d9b82ea26880e281b428a2f0651a2..573e232993d80705f92e33134343f8b70984d752 100644 (file)
@@ -346,9 +346,8 @@ void TocWidget::setTreeDepth(int depth)
 }
 
 
-void TocWidget::on_typeCO_currentIndexChanged(int index)
+void TocWidget::on_typeCO_activated(int index)
 {
-
        if (index == -1)
                return;
        current_type_ = typeCO->itemData(index).toString();
@@ -366,7 +365,7 @@ void TocWidget::outline(FuncCode func_code)
 
        //if another window is active, this attempt will fail,
        //but it will work at least for the second attempt
-       gui_view_.activateWindow(); 
+       gui_view_.activateWindow();
 
        enableControls(false);
        goTo(list[0]);
@@ -380,7 +379,22 @@ void TocWidget::sendDispatch(FuncRequest fr)
 {
 
        fr.setViewOrigin(&gui_view_);
+       GuiWorkArea * old_wa = gui_view_.currentWorkArea();
+       GuiWorkArea * doc_wa = gui_view_.currentMainWorkArea();
+       /* The ToC command should be dispatched to the document work area,
+        * not the Adv. Find&Replace (which is the only other know
+        * possibility.
+        */
+       if (doc_wa != nullptr && doc_wa != old_wa)
+               gui_view_.setCurrentWorkArea(doc_wa);
        DispatchResult const & dr = dispatch(fr);
+       /* If the current workarea has not explicitely changed, and the
+        * original one is still visible, let's reset it.
+        */
+       if (gui_view_.currentWorkArea() == doc_wa
+            && gui_view_.hasVisibleWorkArea(old_wa)
+            && doc_wa != old_wa)
+               gui_view_.setCurrentWorkArea(old_wa);
        if (dr.error())
                gui_view_.message(dr.message());
 }