]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocWidget.cpp
do what the FIXME suggested
[lyx.git] / src / frontends / qt4 / TocWidget.cpp
index bdc968670b084cb9397bdbffd59b4a706ee65f7d..299791559aedc01294c15f1d7de44cd0c82d2171 100644 (file)
@@ -19,6 +19,7 @@
 #include "support/debug.h"
 
 #include <QHeaderView>
+#include <QTimer>
 
 #include <vector>
 
@@ -221,17 +222,28 @@ void TocWidget::updateGui(int selected_type)
                return;
        }
 
-       QString current_text = typeCO->currentText();
+       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);
        }
-       typeCO->setCurrentIndex(selected_type);
+       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);
+       }
+
        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()));
 }