diff --git a/autotests/krearrangecolumnsproxymodeltest.cpp b/autotests/krearrangecolumnsproxymodeltest.cpp index 7ff621f..a84c8a2 100644 --- a/autotests/krearrangecolumnsproxymodeltest.cpp +++ b/autotests/krearrangecolumnsproxymodeltest.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 diff --git a/src/krearrangecolumnsproxymodel.cpp b/src/krearrangecolumnsproxymodel.cpp index 5925809..3f5eede 100644 --- a/src/krearrangecolumnsproxymodel.cpp +++ b/src/krearrangecolumnsproxymodel.cpp @@ -44,12 +44,18 @@ void KRearrangeColumnsProxyModel::setSourceColumns(const QVector &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);