]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocWidget.cpp
TocWidget::updateView(): only set the tree depth if there's a model reset. This is...
[lyx.git] / src / frontends / qt4 / TocWidget.cpp
index fbb017ad7c005f752fa4c4f99b09df5ed44881ff..1667091ffd1adbe485712260dc3d80190ae0ed70 100644 (file)
@@ -99,6 +99,12 @@ void TocWidget::on_updateTB_clicked()
 }
 
 
+void TocWidget::on_sortCB_stateChanged(int state)
+{
+       gui_view_.tocModels().sort(current_type_, state == Qt::Checked);
+       updateView();
+}
+
 /* FIXME (Ugras 17/11/06):
 I have implemented a indexDepth function to get the model indices. In my
 opinion, somebody should derive a new qvariant class for tocModelItem
@@ -213,6 +219,7 @@ static bool canOutline(QString const & type)
 void TocWidget::enableControls(bool enable)
 {
        updateTB->setEnabled(enable);
+       sortCB->setEnabled(enable);
 
        if (!canOutline(current_type_))
                enable = false;
@@ -249,22 +256,30 @@ void TocWidget::updateView()
                return;
        }
        typeCO->setEnabled(true);
-       tocTV->setEnabled(true);
+       tocTV->setEnabled(false);
+       tocTV->setUpdatesEnabled(false);
 
-       QStandardItemModel * toc_model = gui_view_.tocModels().model(current_type_);    
+       QAbstractItemModel * toc_model = gui_view_.tocModels().model(current_type_);    
        if (tocTV->model() != toc_model) {
                tocTV->setModel(toc_model);
                tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
+               setTreeDepth(depth_);
        }
+
+       sortCB->blockSignals(true);
+       sortCB->setChecked(gui_view_.tocModels().isSorted(current_type_));
+       sortCB->blockSignals(false);
+
        bool controls_enabled = toc_model && toc_model->rowCount() > 0
                && !gui_view_.buffer()->isReadonly();
        enableControls(controls_enabled);
 
        depthSL->setMaximum(gui_view_.tocModels().depth(current_type_));
        depthSL->setValue(depth_);
-       setTreeDepth(depth_);
        if (canNavigate(current_type_))
                select(gui_view_.tocModels().currentIndex(current_type_));
+       tocTV->setEnabled(true);
+       tocTV->setUpdatesEnabled(true);
 }