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
This commit is contained in:
Abdelrazak Younes 2007-05-10 16:25:11 +00:00
parent e916170647
commit 5b5ee8cc32
5 changed files with 21 additions and 44 deletions

View File

@ -117,6 +117,7 @@ void ControlToc::outlineOut()
void ControlToc::updateBackend()
{
kernel().buffer().tocBackend().update();
kernel().buffer().structureChanged();
}

View 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();

View 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

View 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());
}

View 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();