diff --git a/autotests/kextracolumnsproxymodeltest.cpp b/autotests/kextracolumnsproxymodeltest.cpp index c307a76..6771edd 100644 --- a/autotests/kextracolumnsproxymodeltest.cpp +++ b/autotests/kextracolumnsproxymodeltest.cpp @@ -175,6 +175,9 @@ private Q_SLOTS: QCOMPARE(pm.index(0, 0).sibling(0, 4).column(), 4); QCOMPARE(pm.index(0, 4).sibling(0, 1).column(), 1); + QCOMPARE(pm.buddy(pm.index(0, 0)), pm.index(0, 0)); + QCOMPARE(pm.buddy(pm.index(0, 4)), pm.index(0, 4)); + QVERIFY(!pm.canFetchMore(QModelIndex())); } diff --git a/src/kextracolumnsproxymodel.cpp b/src/kextracolumnsproxymodel.cpp index 131e2ac..a6045f9 100644 --- a/src/kextracolumnsproxymodel.cpp +++ b/src/kextracolumnsproxymodel.cpp @@ -121,6 +121,15 @@ QModelIndex KExtraColumnsProxyModel::mapToSource(const QModelIndex &proxyIndex) return QIdentityProxyModel::mapToSource(proxyIndex); } +QModelIndex KExtraColumnsProxyModel::buddy(const QModelIndex &proxyIndex) const +{ + const int column = proxyIndex.column(); + if (column >= sourceModel()->columnCount()) { + return proxyIndex; + } + return QIdentityProxyModel::buddy(proxyIndex); +} + QModelIndex KExtraColumnsProxyModel::sibling(int row, int column, const QModelIndex &idx) const { if (row == idx.row() && column == idx.column()) { diff --git a/src/kextracolumnsproxymodel.h b/src/kextracolumnsproxymodel.h index 370532c..c337acd 100644 --- a/src/kextracolumnsproxymodel.h +++ b/src/kextracolumnsproxymodel.h @@ -133,6 +133,8 @@ public: /// @reimp QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; /// @reimp + QModelIndex buddy(const QModelIndex &index) const Q_DECL_OVERRIDE; + /// @reimp Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; /// @reimp QVariant headerData(int section, Qt::Orientation orientation,