From 5b5ee8cc323c674cb37c7d9a6c063db4192e9c5e Mon Sep 17 00:00:00 2001 From: Abdelrazak Younes Date: Thu, 10 May 2007 16:25:11 +0000 Subject: [PATCH] Fix bugs 3528 and 3534 by Ozgur Ugras BARAN and myself: * 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 | 1 + src/frontends/qt4/QToc.cpp | 24 ++-------------------- src/frontends/qt4/QToc.h | 12 ----------- src/frontends/qt4/TocWidget.cpp | 26 ++++++++++++++++-------- src/frontends/qt4/TocWidget.h | 2 +- 5 files changed, 21 insertions(+), 44 deletions(-) diff --git a/src/frontends/controllers/ControlToc.cpp b/src/frontends/controllers/ControlToc.cpp index 68c3490ba7..d1cee72ecc 100644 --- a/src/frontends/controllers/ControlToc.cpp +++ b/src/frontends/controllers/ControlToc.cpp @@ -117,6 +117,7 @@ void ControlToc::outlineOut() void ControlToc::updateBackend() { kernel().buffer().tocBackend().update(); + kernel().buffer().structureChanged(); } diff --git a/src/frontends/qt4/QToc.cpp b/src/frontends/qt4/QToc.cpp index 28c3d9ba76..67f1c81c32 100644 --- a/src/frontends/qt4/QToc.cpp +++ b/src/frontends/qt4/QToc.cpp @@ -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 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(); diff --git a/src/frontends/qt4/QToc.h b/src/frontends/qt4/QToc.h index 7f32a8bfea..c7d039446c 100644 --- a/src/frontends/qt4/QToc.h +++ b/src/frontends/qt4/QToc.h @@ -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 toc_models_; - /// - QStringListModel type_model_; - /// - int type_; }; } // namespace frontend diff --git a/src/frontends/qt4/TocWidget.cpp b/src/frontends/qt4/TocWidget.cpp index 917a1c21fb..acd5279033 100644 --- a/src/frontends/qt4/TocWidget.cpp +++ b/src/frontends/qt4/TocWidget.cpp @@ -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 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()); } diff --git a/src/frontends/qt4/TocWidget.h b/src/frontends/qt4/TocWidget.h index a84c0025e0..1e474f4e51 100644 --- a/src/frontends/qt4/TocWidget.h +++ b/src/frontends/qt4/TocWidget.h @@ -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(); -- 2.39.5