]> git.lyx.org Git - features.git/commitdiff
Fix bugs 3528 and 3534 by Ozgur Ugras BARAN and myself:
authorAbdelrazak Younes <younes@lyx.org>
Thu, 10 May 2007 16:25:11 +0000 (16:25 +0000)
committerAbdelrazak Younes <younes@lyx.org>
Thu, 10 May 2007 16:25:11 +0000 (16:25 +0000)
* ControlToc::updateBackend(): emit Buffer::structureChanged()

* QToc:
  - updateToc(), updateType(), typeModel(): deleted.

* TocWidget
  - updateGui() manually with ControlToc::typenames()
  - on_typeCO_activated(): changed to on_typeCO_currentIndexChanged()

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18258 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/controllers/ControlToc.cpp
src/frontends/qt4/QToc.cpp
src/frontends/qt4/QToc.h
src/frontends/qt4/TocWidget.cpp
src/frontends/qt4/TocWidget.h

index 68c3490ba73ad39334714f257d661a461afed649..d1cee72ecc1df722be1635c72b5cc691c2f361b8 100644 (file)
@@ -117,6 +117,7 @@ void ControlToc::outlineOut()
 void ControlToc::updateBackend()
 {
        kernel().buffer().tocBackend().update();
+       kernel().buffer().structureChanged();
 }
 
 
index 28c3d9ba7634484ba91d76249b5f68ff3489f769..67f1c81c3210fc9e1b0045206c916df06bc87330 100644 (file)
@@ -67,7 +67,7 @@ QStandardItemModel * QToc::tocModel(int type)
        }
 
        LYXERR(Debug::GUI)
-               << "QToc: type_ " << type
+               << "QToc: type " << type
                << "  toc_models_.size() " << toc_models_.size()
                << endl;
 
@@ -110,32 +110,12 @@ bool QToc::initialiseParams(std::string const & data)
        if (!ControlToc::initialiseParams(data))
                return false;
        update();
+       modelReset();
        return true;
 }
 
 
 void QToc::update()
-{
-       updateType();
-       updateToc();
-       modelReset();
-}
-
-
-void QToc::updateType()
-{
-       QStringList type_list;
-
-       vector<docstring> const & type_names = typeNames();
-       BOOST_ASSERT(!type_names.empty());
-       for (size_t i = 0; i != type_names.size(); ++i)
-               type_list.append(toqstr(type_names[i]));
-
-       type_model_.setStringList(type_list);
-}
-
-
-void QToc::updateToc()
 {
        toc_models_.clear();
        TocList::const_iterator it = tocs().begin();
index 7f32a8bfeae6b37f265215443562b83502362acb..c7d039446c008fcda1d02af4cd675e9646bd1c5d 100644 (file)
@@ -39,17 +39,9 @@ public:
        ///
        void update();
        ///
-       void updateToc();
-       ///
-       void updateType();
-
        bool canOutline(int type) const;
        
        QStandardItemModel * tocModel(int type);
-
-       QStringListModel * typeModel()
-       { return &type_model_; }
-
        ///
        QModelIndex const getCurrentIndex(int type) const;
        ///
@@ -66,10 +58,6 @@ Q_SIGNALS:
 private:
        ///
        std::vector<TocModel *> toc_models_;
-       ///
-       QStringListModel type_model_;
-       ///
-       int type_;
 };
 
 } // namespace frontend
index 917a1c21fb298d45f5bcf98f1497073d1daf083f..acd52790338433795f7444bdf86d5c3c340fd69d 100644 (file)
@@ -91,9 +91,10 @@ void TocWidget::selectionChanged(const QModelIndex & current,
 
 void TocWidget::on_updateTB_clicked()
 {
+       // The backend update can take some time so we disable
+       // the controls while waiting.
+       enableControls(false);
        form_->updateBackend();
-       form_->update();
-       update();
 }
 
 /* FIXME (Ugras 17/11/06):
@@ -139,8 +140,7 @@ void TocWidget::setTreeDepth(int depth)
        }
 }
 
-
-void TocWidget::on_typeCO_activated(int value)
+void TocWidget::on_typeCO_currentIndexChanged(int value)
 {
        setTocModel(value);
 }
@@ -240,22 +240,30 @@ void TocWidget::update()
 
 void TocWidget::updateGui()
 {
-       QStringListModel * type_model = form_->typeModel();
-       if (type_model->stringList().isEmpty()) {
+       vector<docstring> const & type_names = form_->typeNames();
+       if (type_names.empty()) {
                enableControls(false);
-               typeCO->setModel(type_model);
+               typeCO->clear();
                tocTV->setModel(new QStandardItemModel);
                tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
                return;
        }
 
        QString current_text = typeCO->currentText();
-       typeCO->setModel(type_model);
-       int const current_type = typeCO->findText(current_text);
+       lyxerr << "current_text " << fromqstr(current_text) << endl;
+       typeCO->blockSignals(true);
+       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;
+       }
        if (current_type != -1)
                typeCO->setCurrentIndex(current_type);
        else
                typeCO->setCurrentIndex(form_->selectedType());
+       typeCO->blockSignals(false);
 
        setTocModel(typeCO->currentIndex());
 }
index a84c0025e01a0aeca636d36c45967eba2c76b5d0..1e474f4e517160f20c0339f3e7d8ef3cf9250c56 100644 (file)
@@ -43,7 +43,7 @@ protected Q_SLOTS:
 
        void on_updateTB_clicked();
        void on_depthSL_valueChanged(int depth);
-       void on_typeCO_activated(int value);
+       void on_typeCO_currentIndexChanged(int value);
        void on_moveUpTB_clicked();
        void on_moveDownTB_clicked();
        void on_moveInTB_clicked();