summaryrefslogtreecommitdiffstats
path: root/src/gui/itemmodels
diff options
context:
space:
mode:
authorLuca Beldi <v.ronin@yahoo.it>2018-09-04 17:15:03 +0100
committerLuca Beldi <v.ronin@yahoo.it>2018-09-06 11:51:28 +0000
commitdc73a691bff1a2aabb2b035802f591b527eda12f (patch)
tree7a2a1af2754286669ce0d80de89ab011ec406d04 /src/gui/itemmodels
parentc88305b68d228a60fa302afb627b6887ece7a110 (diff)
Fix QSIM::itemData returning role 255
Before this fix, QStandardItemModel::itemData returns a map containing role 255 which is used internally to store the flags. This role is an undocumented implementation detail so it should not be returned to the user. [ChangeLog][QtGui][QStandardItemModel] itemData does not return role 255 Change-Id: Ibead3cba84cfe92b3c664bc8ce87508cbcbdc9bd Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/gui/itemmodels')
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp
index a771bffa2f..8ec88ebc60 100644
--- a/src/gui/itemmodels/qstandarditemmodel.cpp
+++ b/src/gui/itemmodels/qstandarditemmodel.cpp
@@ -306,8 +306,11 @@ const QMap<int, QVariant> QStandardItemPrivate::itemData() const
{
QMap<int, QVariant> result;
QVector<QStandardItemData>::const_iterator it;
- for (it = values.begin(); it != values.end(); ++it)
- result.insert((*it).role, (*it).value);
+ for (it = values.cbegin(); it != values.cend(); ++it){
+ // Qt::UserRole - 1 is used internally to store the flags
+ if (it->role != Qt::UserRole - 1)
+ result.insert(it->role, it->value);
+ }
return result;
}
@@ -2939,8 +2942,10 @@ bool QStandardItemModel::insertRows(int row, int count, const QModelIndex &paren
QMap<int, QVariant> QStandardItemModel::itemData(const QModelIndex &index) const
{
Q_D(const QStandardItemModel);
- QStandardItem *item = d->itemFromIndex(index);
- return item ? item->d_func()->itemData() : QMap<int, QVariant>();
+ const QStandardItem *const item = d->itemFromIndex(index);
+ if (!item || item == d->root.data())
+ return QMap<int, QVariant>();
+ return item->d_func()->itemData();
}
/*!