summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-05-03 21:11:57 +0200
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-05-14 18:17:35 +0000
commit71a1df5456ebe7070533b469434a964e7de5a5c7 (patch)
treeea8fd0a489cca1c8bf6ba67d529dde2ac2ee8120 /src/widgets/itemviews
parent432df3f8c8504b333ecc76df4ce19a7b2c04ae77 (diff)
QTableWidget: fix handling of Qt::EditRole/DisplayRole in setItemData()
QTableModel::setItemData() did not treat Qt::EditRole and Qt::DisplayRole as the same. This lead to inconsistencies between setItemData() and QTableWidgetItem::setData() [ChangeLog][QtWidgets][QTableWidget] Fix handling of Qt::EditRole and Qt::DisplayRole in setItemData(). Change-Id: I456f4c8e654de701dcd579236162b8aaa8ba1e53 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r--src/widgets/itemviews/qtablewidget.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp
index ee87aa1615..07b8d3484e 100644
--- a/src/widgets/itemviews/qtablewidget.cpp
+++ b/src/widgets/itemviews/qtablewidget.cpp
@@ -456,9 +456,12 @@ bool QTableModel::setItemData(const QModelIndex &index, const QMap<int, QVariant
itm->view = nullptr; // prohibits item from calling itemChanged()
QVector<int> rolesVec;
for (QMap<int, QVariant>::ConstIterator it = roles.constBegin(); it != roles.constEnd(); ++it) {
- if (itm->data(it.key()) != it.value()) {
- itm->setData(it.key(), it.value());
- rolesVec += it.key();
+ const int role = (it.key() == Qt::EditRole ? Qt::DisplayRole : it.key());
+ if (itm->data(role) != it.value()) {
+ itm->setData(role, it.value());
+ rolesVec += role;
+ if (role == Qt::DisplayRole)
+ rolesVec += Qt::EditRole;
}
}
itm->view = view;