summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2012-02-24 16:32:53 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-22 20:45:12 +0200
commit15953e95030ee42c78a84c48c7a3f3c2c448601f (patch)
tree628bc796efb6c825f09efa331e292d834603ae8d /src
parentbe15856f61a949b8a01a1659c15af675c4c2f4e9 (diff)
QModelIndex: clean up integer size confusion in the API
QAIM::createIndex() took either int or quint32, but QMI::internalId() returned qint64. In the new interface, createIndex() takes, and internalId() provides, integers of type quintptr. This matches the storage size of the void* in the model index and avoids truncation. Remove the createIndex(int, int, quint32) and \obsolete createIndex(int,int,int) overloads. This makes a literal 0 in the third parameter ambiguous now. The solutions have been noted in changes-5.0.0. Change-Id: I0a0ecd8430eaf695129a4d09d14d4e30745485c4 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.cpp20
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.h37
-rw-r--r--src/widgets/itemviews/qtablewidget.cpp4
3 files changed, 17 insertions, 44 deletions
diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp
index e837cbf951..77654158d1 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.cpp
+++ b/src/corelib/itemmodels/qabstractitemmodel.cpp
@@ -328,15 +328,15 @@ void *QPersistentModelIndex::internalPointer() const
}
/*!
- \fn void *QPersistentModelIndex::internalId() const
+ \fn quintptr QPersistentModelIndex::internalId() const
\internal
- Returns a \c{qint64} used by the model to associate the index with
+ Returns a \c{quintptr} used by the model to associate the index with
the internal data structure.
*/
-qint64 QPersistentModelIndex::internalId() const
+quintptr QPersistentModelIndex::internalId() const
{
if (d)
return d->index.internalId();
@@ -2345,15 +2345,7 @@ bool QAbstractItemModel::setHeaderData(int section, Qt::Orientation orientation,
*/
/*!
- \fn QModelIndex QAbstractItemModel::createIndex(int row, int column, int id) const
- \obsolete
-
- Use QModelIndex
- QAbstractItemModel::createIndex(int row, int column, quint32 id) instead.
-*/
-
-/*!
- \fn QModelIndex QAbstractItemModel::createIndex(int row, int column, quint32 id) const
+ \fn QModelIndex QAbstractItemModel::createIndex(int row, int column, quintptr id) const
Creates a model index for the given \a row and \a column with the internal
identifier, \a id.
@@ -3237,7 +3229,7 @@ QAbstractTableModel::~QAbstractTableModel()
QModelIndex QAbstractTableModel::index(int row, int column, const QModelIndex &parent) const
{
- return hasIndex(row, column, parent) ? createIndex(row, column, 0) : QModelIndex();
+ return hasIndex(row, column, parent) ? createIndex(row, column) : QModelIndex();
}
/*!
@@ -3366,7 +3358,7 @@ QAbstractListModel::~QAbstractListModel()
QModelIndex QAbstractListModel::index(int row, int column, const QModelIndex &parent) const
{
- return hasIndex(row, column, parent) ? createIndex(row, column, 0) : QModelIndex();
+ return hasIndex(row, column, parent) ? createIndex(row, column) : QModelIndex();
}
/*!
diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h
index 78176c3eb9..fdc4d6aa90 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.h
+++ b/src/corelib/itemmodels/qabstractitemmodel.h
@@ -64,7 +64,7 @@ public:
inline int row() const { return r; }
inline int column() const { return c; }
inline void *internalPointer() const { return p; }
- inline qint64 internalId() const { return reinterpret_cast<qint64>(p); }
+ inline quintptr internalId() const { return quintptr(p); }
inline QModelIndex parent() const;
inline QModelIndex sibling(int row, int column) const;
inline QModelIndex child(int row, int column) const;
@@ -88,7 +88,10 @@ public:
}
return false; }
private:
- inline QModelIndex(int row, int column, void *ptr, const QAbstractItemModel *model);
+ inline QModelIndex(int arow, int acolumn, void *ptr, const QAbstractItemModel *amodel)
+ : r(arow), c(acolumn), p(ptr), m(amodel) {}
+ inline QModelIndex(int arow, int acolumn, quintptr id, const QAbstractItemModel *amodel)
+ : r(arow), c(acolumn), p(reinterpret_cast<void*>(id)), m(amodel) {}
int r, c;
void *p;
const QAbstractItemModel *m;
@@ -121,7 +124,7 @@ public:
int row() const;
int column() const;
void *internalPointer() const;
- qint64 internalId() const;
+ quintptr internalId() const;
QModelIndex parent() const;
QModelIndex sibling(int row, int column) const;
QModelIndex child(int row, int column) const;
@@ -329,8 +332,7 @@ protected:
QAbstractItemModel(QAbstractItemModelPrivate &dd, QObject *parent = 0);
inline QModelIndex createIndex(int row, int column, void *data = 0) const;
- inline QModelIndex createIndex(int row, int column, int id) const;
- inline QModelIndex createIndex(int row, int column, quint32 id) const;
+ inline QModelIndex createIndex(int row, int column, quintptr id) const;
void encodeData(const QModelIndexList &indexes, QDataStream &stream) const;
bool decodeData(int row, int column, const QModelIndex &parent, QDataStream &stream);
@@ -400,25 +402,8 @@ inline bool QAbstractItemModel::moveColumn(const QModelIndex &sourceParent, int
{ return moveRows(sourceParent, sourceColumn, 1, destinationParent, destinationChild); }
inline QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, void *adata) const
{ return QModelIndex(arow, acolumn, adata, this); }
-inline QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, int aid) const
-#if defined(Q_CC_MSVC)
-#pragma warning( push )
-#pragma warning( disable : 4312 ) // avoid conversion warning on 64-bit
-#endif
-{ return QModelIndex(arow, acolumn, reinterpret_cast<void*>(aid), this); }
-#if defined(Q_CC_MSVC)
-#pragma warning( pop )
-#endif
-inline QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, quint32 aid) const
-#if defined(Q_CC_MSVC)
-#pragma warning( push )
-#pragma warning( disable : 4312 ) // avoid conversion warning on 64-bit
-#endif
-{ return QModelIndex(arow, acolumn, reinterpret_cast<void*>(aid), this); }
-#if defined(Q_CC_MSVC)
-#pragma warning( pop )
-#endif
-
+inline QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, quintptr aid) const
+{ return QModelIndex(arow, acolumn, aid, this); }
class Q_CORE_EXPORT QAbstractTableModel : public QAbstractItemModel
{
@@ -463,10 +448,6 @@ private:
// inline implementations
-inline QModelIndex::QModelIndex(int arow, int acolumn, void *adata,
- const QAbstractItemModel *amodel)
- : r(arow), c(acolumn), p(adata), m(amodel) {}
-
inline QModelIndex QModelIndex::parent() const
{ return m ? m->parent(*this) : QModelIndex(); }
diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp
index 14d14913f5..b74d1195b6 100644
--- a/src/widgets/itemviews/qtablewidget.cpp
+++ b/src/widgets/itemviews/qtablewidget.cpp
@@ -521,8 +521,8 @@ void QTableModel::sort(int column, Qt::SortOrder order)
: unsortable.at(i - sortable.count()));
for (int c = 0; c < columnCount(); ++c) {
sorted_table[tableIndex(i, c)] = item(r, c);
- from.append(createIndex(r, c, 0));
- to.append(createIndex(i, c, 0));
+ from.append(createIndex(r, c));
+ to.append(createIndex(i, c));
}
}