diff --git a/autotests/krearrangecolumnsproxymodeltest.cpp b/autotests/krearrangecolumnsproxymodeltest.cpp index e1674ca..7ff621f 100644 --- a/autotests/krearrangecolumnsproxymodeltest.cpp +++ b/autotests/krearrangecolumnsproxymodeltest.cpp @@ -121,6 +121,9 @@ private Q_SLOTS: QCOMPARE(pm.mapToSource(pm.index(0, 0)).column(), 2); // column 0 points to C QCOMPARE(pm.mapToSource(pm.index(0, 1)).column(), 3); // column 1 points to D + QCOMPARE(pm.sibling(0, 1, pm.index(0, 0)).column(), 1); + QCOMPARE(pm.sibling(0, 0, pm.index(0, 1)).column(), 0); + QCOMPARE(extractRowTexts(&pm, 0), QStringLiteral("CDBA")); QCOMPARE(extractRowTexts(&pm, 0, pm.index(0, 0)), QStringLiteral("opnm")); QCOMPARE(extractRowTexts(&pm, 1, pm.index(0, 0)), QStringLiteral("strq")); diff --git a/src/krearrangecolumnsproxymodel.cpp b/src/krearrangecolumnsproxymodel.cpp index 267b792..24ad16f 100644 --- a/src/krearrangecolumnsproxymodel.cpp +++ b/src/krearrangecolumnsproxymodel.cpp @@ -97,6 +97,13 @@ QVariant KRearrangeColumnsProxyModel::headerData(int section, Qt::Orientation or } } +QModelIndex KRearrangeColumnsProxyModel::sibling(int row, int column, const QModelIndex &idx) const +{ + if (column >= d_ptr->m_sourceColumns.count()) + return QModelIndex(); + return index(row, column, idx.parent()); +} + QModelIndex KRearrangeColumnsProxyModel::mapFromSource(const QModelIndex &sourceIndex) const { if (!sourceIndex.isValid()) { diff --git a/src/krearrangecolumnsproxymodel.h b/src/krearrangecolumnsproxymodel.h index c2ac8eb..6e87677 100644 --- a/src/krearrangecolumnsproxymodel.h +++ b/src/krearrangecolumnsproxymodel.h @@ -87,6 +87,9 @@ public: /// @reimp QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + /// @reimp + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; + private: int proxyColumnForSourceColumn(int sourceColumn) const; int sourceColumnForProxyColumn(int proxyColumn) const;