From 64e5df84058dfe4b760e8edf5868c3aa1e694796 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Tue, 28 May 2019 01:02:57 +0000 Subject: [PATCH] apply upstream commits to item models and widgets that includes the following upstream commits: https://github.com/qt/qtbase/commit/b58631ce472ce2bfce6319874468aa4e7e11b405 https://github.com/qt/qtbase/commit/f6eb3c220b17ecb56befe1a1ea2241ca6d5ab0c8 Signed-off-by: Ivailo Monev --- src/gui/itemviews/qlistwidget.cpp | 3 ++- src/gui/itemviews/qstandarditemmodel.cpp | 3 ++- src/gui/itemviews/qtablewidget.cpp | 3 ++- src/gui/itemviews/qtreewidget.cpp | 8 +++++--- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/gui/itemviews/qlistwidget.cpp b/src/gui/itemviews/qlistwidget.cpp index ff50a9988..63876b719 100644 --- a/src/gui/itemviews/qlistwidget.cpp +++ b/src/gui/itemviews/qlistwidget.cpp @@ -68,6 +68,7 @@ QListModel::~QListModel() void QListModel::clear() { + beginResetModel(); for (int i = 0; i < items.count(); ++i) { if (items.at(i)) { items.at(i)->d->theid = -1; @@ -76,7 +77,7 @@ void QListModel::clear() } } items.clear(); - reset(); + endResetModel(); } QListWidgetItem *QListModel::at(int row) const diff --git a/src/gui/itemviews/qstandarditemmodel.cpp b/src/gui/itemviews/qstandarditemmodel.cpp index 5e0a3aa13..22118df26 100644 --- a/src/gui/itemviews/qstandarditemmodel.cpp +++ b/src/gui/itemviews/qstandarditemmodel.cpp @@ -2086,13 +2086,14 @@ QStandardItemModel::~QStandardItemModel() void QStandardItemModel::clear() { Q_D(QStandardItemModel); + beginResetModel(); d->root.reset(new QStandardItem); d->root->d_func()->setModel(this); qDeleteAll(d->columnHeaderItems); d->columnHeaderItems.clear(); qDeleteAll(d->rowHeaderItems); d->rowHeaderItems.clear(); - reset(); + endResetModel(); } /*! diff --git a/src/gui/itemviews/qtablewidget.cpp b/src/gui/itemviews/qtablewidget.cpp index 06121bdcc..88d1c753a 100644 --- a/src/gui/itemviews/qtablewidget.cpp +++ b/src/gui/itemviews/qtablewidget.cpp @@ -759,6 +759,7 @@ void QTableModel::clear() void QTableModel::clearContents() { + beginResetModel(); for (int i = 0; i < tableItems.count(); ++i) { if (tableItems.at(i)) { tableItems.at(i)->view = 0; @@ -766,7 +767,7 @@ void QTableModel::clearContents() tableItems[i] = 0; } } - reset(); + endResetModel(); } void QTableModel::itemChanged(QTableWidgetItem *item) diff --git a/src/gui/itemviews/qtreewidget.cpp b/src/gui/itemviews/qtreewidget.cpp index 7f11de4c7..a2c9eed47 100644 --- a/src/gui/itemviews/qtreewidget.cpp +++ b/src/gui/itemviews/qtreewidget.cpp @@ -156,6 +156,7 @@ QTreeModel::~QTreeModel() void QTreeModel::clear() { SkipSorting skipSorting(this); + beginResetModel(); for (int i = 0; i < rootItem->childCount(); ++i) { QTreeWidgetItem *item = rootItem->children.at(i); item->par = 0; @@ -164,7 +165,7 @@ void QTreeModel::clear() } rootItem->children.clear(); sortPendingTimer.stop(); - reset(); + endResetModel(); } /*! @@ -2133,10 +2134,11 @@ QVariant QTreeWidgetItem::childrenCheckState(int column) const default: return Qt::PartiallyChecked; } + + if (uncheckedChildren && checkedChildren) + return Qt::PartiallyChecked; } - if (uncheckedChildren && checkedChildren) - return Qt::PartiallyChecked; if (uncheckedChildren) return Qt::Unchecked; else if (checkedChildren)