From bdc14837191dc81452fa7fbba20ba0a29e5fbebd Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Wed, 4 Nov 2020 12:34:56 +0100 Subject: Fix QQuickHeaderView models to pass model tester Following 72e0d699cec09458ca9325035d477d4899e8e47b in qtbase, the model tester exercises additional code paths to verify correct row/columnCount implementations for flat models. This revealed a few bugs in the models used in QQuickHeaderView and the unit test: * neither QHeaderDataProxyModel nor the test models handled a valid parent index for calls to row/columnCount * QHeaderDataProxyModel::sibling passed the index on as parent Change-Id: I612e18030d837275614d61ce8987c93fff7f20a9 Reviewed-by: Fabian Kosmale --- src/quicktemplates2/qquickheaderview.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/quicktemplates2') diff --git a/src/quicktemplates2/qquickheaderview.cpp b/src/quicktemplates2/qquickheaderview.cpp index 8593fa0f..8671ac63 100644 --- a/src/quicktemplates2/qquickheaderview.cpp +++ b/src/quicktemplates2/qquickheaderview.cpp @@ -364,18 +364,22 @@ QModelIndex QHeaderDataProxyModel::parent(const QModelIndex &child) const return QModelIndex(); } -QModelIndex QHeaderDataProxyModel::sibling(int row, int column, const QModelIndex &idx) const +QModelIndex QHeaderDataProxyModel::sibling(int row, int column, const QModelIndex &) const { - return index(row, column, idx); + return index(row, column); } int QHeaderDataProxyModel::rowCount(const QModelIndex &parent) const { + if (parent.isValid()) + return 0; return m_model.isNull() ? -1 : (m_orientation == Qt::Horizontal ? 1 : m_model->rowCount(parent)); } int QHeaderDataProxyModel::columnCount(const QModelIndex &parent) const { + if (parent.isValid()) + return 0; return m_model.isNull() ? -1 : (m_orientation == Qt::Vertical ? 1 : m_model->columnCount(parent)); } @@ -401,7 +405,8 @@ bool QHeaderDataProxyModel::setData(const QModelIndex &index, const QVariant &va bool QHeaderDataProxyModel::hasChildren(const QModelIndex &parent) const { - Q_UNUSED(parent); + if (!parent.isValid()) + return rowCount(parent) > 0 && columnCount(parent) > 0; return false; } -- cgit v1.2.3