]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocWidget.cpp
Some dialog consistency work:
[lyx.git] / src / frontends / qt4 / TocWidget.cpp
index c51740bab54a0c84068251e5ac97fcf959000924..6912c8795b752e7f48907801f3d38ee2d030a09a 100644 (file)
@@ -19,6 +19,7 @@
 #include "support/debug.h"
 
 #include <QHeaderView>
+#include <QTimer>
 
 #include <vector>
 
@@ -206,14 +207,15 @@ void TocWidget::enableControls(bool enable)
 void TocWidget::updateView()
 {
        LYXERR(Debug::GUI, "In TocWidget::updateView()");
+       setTreeDepth();
        select(form_.currentIndex(typeCO->currentIndex()));
 }
 
 
 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);
@@ -224,10 +226,8 @@ void TocWidget::updateGui(int selected_type)
        QString const current_text = typeCO->currentText();
        typeCO->blockSignals(true);
        typeCO->clear();
-       for (size_t i = 0; i != type_names.size(); ++i) {
-               QString item = toqstr(type_names[i]);
-               typeCO->addItem(item);
-       }
+       for (int i = 0; i != type_names.size(); ++i)
+               typeCO->addItem(type_names[i]);
        if (selected_type != -1)
                typeCO->setCurrentIndex(selected_type);
        else {
@@ -239,6 +239,10 @@ void TocWidget::updateGui(int selected_type)
        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(updateView()));
 }