]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocModel.cpp
Fix the tab ordering of GuiDocument components.
[lyx.git] / src / frontends / qt4 / TocModel.cpp
index e6d6d08b24605989c0c3d29d83d1259dde1aa339..508f333da8038b7b600360261a0d9fe00ce73f3b 100644 (file)
@@ -33,34 +33,36 @@ using namespace std;
 namespace lyx {
 namespace frontend {
 
-///////////////////////////////////////////////////////////////////////////////
-//
-// TocTypeModel
-//
-///////////////////////////////////////////////////////////////////////////////
-
-TocTypeModel::TocTypeModel(QObject * parent)
-       : QStandardItemModel(parent)
-{}
-
-
-void TocTypeModel::reset()
+/// A QStandardItemModel that gives access to the reset methods.
+/// This is needed in order to fix http://www.lyx.org/trac/ticket/3740
+class TocTypeModel : public QStandardItemModel
 {
-       QStandardItemModel::reset();
-}
-
-#if QT_VERSION >= 0x040600
-void TocTypeModel::beginResetModel() { 
-       QStandardItemModel::beginResetModel(); 
-}
-
-
-void TocTypeModel::endResetModel() 
-{ 
-       QStandardItemModel::endResetModel(); 
-}
-#endif
-
+public:
+       ///
+       TocTypeModel(QObject * parent) : QStandardItemModel(parent)
+       {}
+       ///
+       void reset()
+       {
+               QStandardItemModel::reset();
+       }
+       ///
+       void beginResetModel()
+       { 
+       #if QT_VERSION >= 0x040600
+               QStandardItemModel::beginResetModel(); 
+       #endif
+       }
+       ///
+       void endResetModel()
+       { 
+       #if QT_VERSION >= 0x040600
+               QStandardItemModel::endResetModel(); 
+       #else
+               QStandardItemModel::reset();
+       #endif
+       }
+};
 
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -146,6 +148,7 @@ void TocModel::updateItem(DocIterator const & dit)
        QModelIndex index = modelIndex(dit);
        TocItem const & toc_item = tocItem(index);
        model_->setData(index, toqstr(toc_item.str()), Qt::DisplayRole);
+       model_->setData(index, toqstr(toc_item.tooltip()), Qt::ToolTipRole);
 }
 
 
@@ -160,6 +163,7 @@ void TocModel::reset(Toc const & toc)
        }
 
        model_->blockSignals(true);
+       model_->beginResetModel();
        model_->insertColumns(0, 1);
        maxdepth_ = 0;
        mindepth_ = INT_MAX;
@@ -174,6 +178,7 @@ void TocModel::reset(Toc const & toc)
                QModelIndex top_level_item = model_->index(current_row, 0);
                model_->setData(top_level_item, toqstr(item.str()), Qt::DisplayRole);
                model_->setData(top_level_item, index, Qt::UserRole);
+               model_->setData(top_level_item, toqstr(item.tooltip()), Qt::ToolTipRole);
 
                LYXERR(Debug::GUI, "Toc: at depth " << item.depth()
                        << ", added item " << item.str());
@@ -187,7 +192,7 @@ void TocModel::reset(Toc const & toc)
        if (is_sorted_)
                sorted_model_->sort(0);
        model_->blockSignals(false);
-       reset();
+       model_->endResetModel();
 //     emit headerDataChanged();
 }
 
@@ -215,6 +220,7 @@ void TocModel::populate(unsigned int & index, QModelIndex const & parent)
                child_item = model_->index(current_row, 0, parent);
                model_->setData(child_item, toqstr(item.str()), Qt::DisplayRole);
                model_->setData(child_item, index, Qt::UserRole);
+               model_->setData(child_item, toqstr(item.tooltip()), Qt::ToolTipRole);
                populate(index, child_item);
                if (index >= end)
                        break;
@@ -240,7 +246,7 @@ TocModels::TocModels()
        : bv_(0)
 {
        names_ = new TocTypeModel(this);
-       names_sorted_ = new QSortFilterProxyModel(this);
+       names_sorted_ = new TocModelSortProxyModel(this);
        names_sorted_->setSourceModel(names_);
 #if QT_VERSION >= 0x040300
        names_sorted_->setSortLocaleAware(true);
@@ -350,9 +356,7 @@ void TocModels::reset(BufferView const * bv)
        }
 
        names_->blockSignals(true);
-#if QT_VERSION >= 0x040600
        names_->beginResetModel();
-#endif 
        names_->insertColumns(0, 1);
        TocList const & tocs = bv_->buffer().masterBuffer()->tocBackend().tocs();
        TocList::const_iterator it = tocs.begin();
@@ -375,11 +379,7 @@ void TocModels::reset(BufferView const * bv)
                names_->setData(index, type, Qt::UserRole);
        }
        names_->blockSignals(false);
-#if QT_VERSION >= 0x040600
        names_->endResetModel();
-#else
-       names_->reset();
-#endif
 }