]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt/TocModel.cpp
Amend 4cd568d31266
[lyx.git] / src / frontends / qt / TocModel.cpp
index e43b3df445e792650a531bd1b72342b7480817c5..c0c3dce5487766937f49bc99b92f37f68b8a34d0 100644 (file)
@@ -126,8 +126,8 @@ QModelIndex TocModel::modelIndex(DocIterator const & dit) const
        if (toc_->empty())
                return QModelIndex();
 
-       unsigned int const toc_index = TocBackend::findItem(*toc_, dit) -
-                                      toc_->begin();
+       unsigned int const toc_index =
+               static_cast<unsigned int>(TocBackend::findItem(*toc_, dit) - toc_->begin());
 
        QModelIndexList list = model()->match(model()->index(0, 0), Qt::UserRole,
                QVariant(toc_index), 1,
@@ -283,7 +283,7 @@ QAbstractItemModel * TocModels::model(QString const & type)
        if (it != models_.end())
                return it.value()->model();
        LYXERR0("type not found: " << type);
-       return 0;
+       return nullptr;
 }
 
 
@@ -327,6 +327,11 @@ TocItem const TocModels::currentItem(QString const & type,
        }
        LASSERT(index.model() == it.value()->model(), return TocItem());
 
+       if (it.value()->empty()) {
+               LYXERR(Debug::GUI, "TocModels::currentItem(): requested toc is empty!");
+               return TocItem();
+       }
+
        return it.value()->tocItem(index);
 }
 
@@ -336,6 +341,13 @@ void TocModels::updateItem(QString const & type, DocIterator const & dit)
        models_[type]->updateItem(dit);
 }
 
+TocModels::~TocModels(){
+       QHashIterator<QString, TocModel *> iter(models_);
+       while(iter.hasNext()) {
+               iter.next();
+               delete iter.value();
+       }
+}
 
 void TocModels::reset(BufferView const * bv)
 {