///////////////////////////////////////////////////////////////////////////////
TocModels::TocModels()
- : bv_(0)
{
names_ = new TocTypeModel(this);
names_sorted_ = new TocModelSortProxyModel(this);
int TocModels::depth(QString const & type)
{
const_iterator it = models_.find(type);
- if (!bv_ || it == models_.end())
+ if (it == models_.end())
return 0;
return it.value()->modelDepth();
}
QAbstractItemModel * TocModels::model(QString const & type)
{
- if (!bv_)
- return 0;
iterator it = models_.find(type);
if (it != models_.end())
return it.value()->model();
}
-QModelIndex TocModels::currentIndex(QString const & type) const
+QModelIndex TocModels::currentIndex(QString const & type,
+ DocIterator const & dit) const
{
const_iterator it = models_.find(type);
- if (!bv_ || it == models_.end())
+ if (it == models_.end())
return QModelIndex();
- return it.value()->modelIndex(bv_->cursor());
+ return it.value()->modelIndex(dit);
}
void TocModels::reset(BufferView const * bv)
{
- bv_ = bv;
clear();
- if (!bv_) {
+ if (!bv) {
iterator end = models_.end();
for (iterator it = models_.begin(); it != end; ++it)
it.value()->reset();
names_->blockSignals(true);
names_->beginResetModel();
names_->insertColumns(0, 1);
- TocList const & tocs = bv_->buffer().masterBuffer()->tocBackend().tocs();
+ TocList const & tocs = bv->buffer().masterBuffer()->tocBackend().tocs();
TocList::const_iterator it = tocs.begin();
TocList::const_iterator toc_end = tocs.end();
for (; it != toc_end; ++it) {
///
QAbstractItemModel * nameModel();
///
- QModelIndex currentIndex(QString const & type) const;
+ QModelIndex currentIndex(QString const & type,
+ DocIterator const & dit) const;
///
void goTo(QString const & type, QModelIndex const & index) const;
///
///
void clear();
///
- BufferView const * bv_;
- ///
QHash<QString, TocModel *> models_;
///
TocTypeModel * names_;
if (!persistent_)
setTreeDepth(depth_);
persistentCB->setChecked(persistent_);
- select(gui_view_.tocModels().currentIndex(current_type_));
+ // select the item at current cursor location
+ if (gui_view_.documentBufferView()) {
+ DocIterator const & dit = gui_view_.documentBufferView()->cursor();
+ select(gui_view_.tocModels().currentIndex(current_type_, dit));
+ }
}
filterContents();
}