]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocWidget.cpp
Complete the removal of the embedding stuff. Maybe. It's hard to be sure we got every...
[lyx.git] / src / frontends / qt4 / TocWidget.cpp
index e90b53aeaf78c1be7e0affa05962032b72873f09..46985c2fcfa584d4701d37755ea0a27e065b5815 100644 (file)
@@ -19,6 +19,7 @@
 #include "support/debug.h"
 
 #include <QHeaderView>
+#include <QTimer>
 
 #include <vector>
 
@@ -32,8 +33,6 @@ TocWidget::TocWidget(GuiToc & form, QWidget * parent)
 {
        setupUi(this);
 
-       connect(&form_, SIGNAL(modelReset()), SLOT(updateGui()));
-
        moveOutTB->setIcon(QIcon(":/images/promote.png"));
        moveInTB->setIcon(QIcon(":/images/demote.png"));
        moveUpTB->setIcon(QIcon(":/images/up.png"));
@@ -212,10 +211,10 @@ void TocWidget::updateView()
 }
 
 
-void TocWidget::updateGui()
+void TocWidget::updateGui(int selected_type)
 {
-       vector<docstring> const & type_names = form_.typeNames();
-       if (type_names.empty()) {
+       QStringList const & type_names = form_.typeNames();
+       if (type_names.isEmpty()) {
                enableControls(false);
                typeCO->clear();
                tocTV->setModel(new QStandardItemModel);
@@ -223,24 +222,26 @@ void TocWidget::updateGui()
                return;
        }
 
-       QString current_text = typeCO->currentText();
-       //lyxerr << "current_text " << fromqstr(current_text) << endl;
+       QString const current_text = typeCO->currentText();
        typeCO->blockSignals(true);
        typeCO->clear();
-       int current_type = -1;
-       for (size_t i = 0; i != type_names.size(); ++i) {
-               QString item = toqstr(type_names[i]);
-               typeCO->addItem(item);
-               if (item == current_text)
-                       current_type = i;
+       for (int i = 0; i != type_names.size(); ++i)
+               typeCO->addItem(type_names[i]);
+       if (selected_type != -1)
+               typeCO->setCurrentIndex(selected_type);
+       else {
+               int const new_index = typeCO->findText(current_text);
+               if (new_index != -1)
+                       typeCO->setCurrentIndex(new_index);
        }
-       if (current_type != -1)
-               typeCO->setCurrentIndex(current_type);
-       else
-               typeCO->setCurrentIndex(form_.selectedType());
+
        typeCO->blockSignals(false);
 
        setTocModel(typeCO->currentIndex());
+
+       // setTocModel produce QTreeView reset and setting depth again
+       // is needed. That must be done after all Qt updates are processed.
+       QTimer::singleShot(0, this, SLOT(setTreeDepth()));
 }