]> git.lyx.org Git - lyx.git/commitdiff
TocWidget: Small reorg in order to fix http://bugzilla.lyx.org/show_bug.cgi?id=4940
authorAbdelrazak Younes <younes@lyx.org>
Wed, 11 Jun 2008 18:13:14 +0000 (18:13 +0000)
committerAbdelrazak Younes <younes@lyx.org>
Wed, 11 Jun 2008 18:13:14 +0000 (18:13 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25230 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/GuiToc.cpp
src/frontends/qt4/GuiView.cpp
src/frontends/qt4/TocWidget.cpp
src/frontends/qt4/TocWidget.h

index 24d072081bf57fd54f6475146f022f353a19f029..f130f878c567ec52a62535930e8938b9c393d8fc 100644 (file)
@@ -83,6 +83,7 @@ void GuiToc::dispatchParams()
 
 void GuiToc::enableView(bool enable)
 {
+       widget_->init(QString());
        widget_->setEnabled(enable);
 }
 
index 2dbcfd5ef1a0c6bbe9b32e6450ada0c687bd4452..3ee10af27e3355b568bd8443259e97d30b3df517 100644 (file)
@@ -676,7 +676,7 @@ void GuiView::on_lastWorkAreaRemoved()
                }
        }
 #else
-       structureChanged();
+       d.toc_models_.reset(0);
        // The document settings needs to be reinitialised.
        updateDialog("document", "");
        updateDialogs();
index d46a7d3a65c58799809fcba16129094319e0154b..05501f16e96ec062c16603f3faf40a59060751c3 100644 (file)
@@ -21,6 +21,7 @@
 #include "LyXFunc.h"
 
 #include "support/debug.h"
+#include "support/lassert.h"
 
 #include <QHeaderView>
 #include <QTimer>
@@ -132,9 +133,9 @@ void TocWidget::setTreeDepth(int depth)
 }
 
 
-void TocWidget::on_typeCO_currentIndexChanged(int value)
+void TocWidget::on_typeCO_currentIndexChanged(int)
 {
-       setTocModel(value);
+       updateView();
        gui_view_.setFocus();
 }
 
@@ -209,6 +210,7 @@ void TocWidget::enableControls(bool enable)
 void TocWidget::updateView()
 {
        LYXERR(Debug::GUI, "In TocWidget::updateView()");
+       setTocModel();
        setTreeDepth(depth_);
        select(gui_view_.tocModels().currentIndex(typeCO->currentIndex()));
 }
@@ -219,12 +221,14 @@ void TocWidget::init(QString const & str)
        QStringList const & type_names = gui_view_.tocModels().typeNames();
        if (type_names.isEmpty()) {
                enableControls(false);
-               typeCO->clear();
+               typeCO->setEnabled(false);
                tocTV->setModel(new QStandardItemModel);
-               tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
+               tocTV->setEnabled(false);
                return;
        }
 
+       typeCO->setEnabled(true);
+       tocTV->setEnabled(true);
        int selected_type = gui_view_.tocModels().decodeType(str);
 
        QString const current_text = typeCO->currentText();
@@ -244,34 +248,30 @@ void TocWidget::init(QString const & str)
 
        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()));
 }
 
 
-void TocWidget::setTocModel(size_t type)
+void TocWidget::setTocModel()
 {
-       bool controls_enabled = false;
-       QStandardItemModel * toc_model = gui_view_.tocModels().model(type);
-       if (toc_model) {
-               controls_enabled = toc_model->rowCount() > 0;
+       int const toc_type = typeCO->currentIndex();
+       QStandardItemModel * toc_model = gui_view_.tocModels().model(toc_type);
+       LASSERT(toc_model, return);
+       
+       if (tocTV->model() != toc_model) {
                tocTV->setModel(toc_model);
                tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
-               LYXERR(Debug::GUI, "tocModel()->rowCount "
-                       << toc_model->rowCount()
-                       << "\nform_->tocModel()->columnCount "
-                       << toc_model->columnCount());
        }
 
+       bool controls_enabled = toc_model->rowCount() > 0;;
        enableControls(controls_enabled);
 
        if (controls_enabled) {
-               depthSL->setMaximum(gui_view_.tocModels().depth(type));
+               depthSL->setMaximum(gui_view_.tocModels().depth(toc_type));
                depthSL->setValue(depth_);
        }
-
-       // 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()));
 }
 
 } // namespace frontend
index 80d6d3f152a489a30e6734f9bb155bd947d71442..e784a7c5c7af27084ea5874239c3f2a6c89653be 100644 (file)
@@ -41,7 +41,7 @@ public Q_SLOTS:
 
 protected Q_SLOTS:
        ///
-       void setTocModel(size_t type);
+       void setTocModel();
        ///
        void select(QModelIndex const & index);
        ///