KRearrangeColumnsProxyModel: reimplement sibling() so it works as expected

wilder
David Faure 8 years ago
parent 57700ea9e4
commit 18ab467c11
  1. 3
      autotests/krearrangecolumnsproxymodeltest.cpp
  2. 7
      src/krearrangecolumnsproxymodel.cpp
  3. 3
      src/krearrangecolumnsproxymodel.h

@ -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"));

@ -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()) {

@ -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;

Loading…
Cancel
Save