From f246e380c373e74ff8a039c7ae057da6c0e6e395 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 29 Jan 2015 12:02:10 +0100 Subject: [PATCH] QAbstractTableModel/QAbstractListModel: reimplement sibling() This basically inlines the call to parent(), which unconditionally returns QModelIndex(). The change is binary compatible, because even though we newly override a previously non-overridden virtual method, it doesn't matter whether old code still calls the base class' method, as the new implementation is semantically equivalent, at least if subclasses don't inherit parent() (but why would they). [ChangeLog][QtCore][Important Behavior Changes] QAbstractTableModel and QAbstractListModel now reimplement sibling() to avoid calling parent() (which returns a constant). Subclasses of these models that override parent(), will likely also need to override sibling() now. Change-Id: I9e0cb5622a6d3826e40acaf0e0cd3fdea85cba2d Reviewed-by: David Faure --- src/corelib/itemmodels/qabstractitemmodel.cpp | 16 ++++++++++++++++ src/corelib/itemmodels/qabstractitemmodel.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp index 88e39f9441..43b51bcaf5 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.cpp +++ b/src/corelib/itemmodels/qabstractitemmodel.cpp @@ -3345,6 +3345,14 @@ QModelIndex QAbstractTableModel::parent(const QModelIndex &) const return QModelIndex(); } +/*! + \reimp +*/ +QModelIndex QAbstractTableModel::sibling(int row, int column, const QModelIndex &) const +{ + return index(row, column); +} + bool QAbstractTableModel::hasChildren(const QModelIndex &parent) const { if (parent.model() == this || !parent.isValid()) @@ -3486,6 +3494,14 @@ QModelIndex QAbstractListModel::parent(const QModelIndex & /* index */) const return QModelIndex(); } +/*! + \reimp +*/ +QModelIndex QAbstractListModel::sibling(int row, int column, const QModelIndex &) const +{ + return index(row, column); +} + /*! \reimp */ diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h index 7d8c1ff113..f1f67c9412 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.h +++ b/src/corelib/itemmodels/qabstractitemmodel.h @@ -417,6 +417,7 @@ public: ~QAbstractTableModel(); QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE; @@ -442,6 +443,7 @@ public: ~QAbstractListModel(); QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE; bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE;