KRearrangeColumnsProxyModel: fix crash when there's no source model

wilder
David Faure 8 years ago
parent 26699d4d04
commit 9145c173d2
  1. 10
      autotests/krearrangecolumnsproxymodeltest.cpp
  2. 6
      src/krearrangecolumnsproxymodel.cpp

@ -65,6 +65,16 @@ private Q_SLOTS:
// showModel(&mod);
}
void shouldShowNothingIfNoSourceModel()
{
// Given a rearrange-columns proxy with no source model
KRearrangeColumnsProxyModel pm;
// Then the proxy should show nothing (no columns selected)
QCOMPARE(pm.rowCount(), 0);
QCOMPARE(pm.columnCount(), 0);
}
void shouldShowNothingIfNoColumnSelection()
{
// Given a rearrange-columns proxy

@ -44,12 +44,18 @@ void KRearrangeColumnsProxyModel::setSourceColumns(const QVector<int> &columns)
int KRearrangeColumnsProxyModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
if (!sourceModel()) {
return 0;
}
return d_ptr->m_sourceColumns.count();
}
int KRearrangeColumnsProxyModel::rowCount(const QModelIndex &parent) const
{
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
if (!sourceModel()) {
return 0;
}
// The parent in the source model is on column 0, whatever swapping we are doing
const QModelIndex sourceParent = mapToSource(parent).sibling(parent.row(), 0);
return sourceModel()->rowCount(sourceParent);

Loading…
Cancel
Save