diff options
author | Andreas Buhr <andreas.buhr@qt.io> | 2021-06-02 16:29:44 +0200 |
---|---|---|
committer | Andreas Buhr <andreas.buhr@qt.io> | 2021-07-15 18:09:12 +0200 |
commit | 0c2125458a9fdddaf3385b257ba4350da872a1d1 (patch) | |
tree | 65c30aaf3436ec6e7571d43be24b2ec1c2c682eb /src/widgets/itemviews | |
parent | 4cd2cca553ba2fdcd6cd59c2cd055fc8e6e83ae4 (diff) |
Consistent handling of disabled items in QItemSelectionModel
In QItemSelectionModel, items which are disabled or marked as not
selectable should not be considered as selected. But this was
not handled consistently.
The following methods considered only items which are enabled and
marked selectable: selectedIndexes(), rowIntersectsSelection(), and
columnIntersectsSelection(). The following methods considered only
items which are marked selectable, but did not check whether they
are enabled: selectedRows(), selectedColumns(), isRowSelected(),
isColumnSelected(), isSelected(). Finally there is hasSelection(),
which did not check for enabled nor for selectable.
This patch introduces consistent behavior. All methods check
both whether the items are enabled and whether they are selectable now.
[ChangeLog][QtCore][QItemSelectionModel][Important Behavior Changes]
All methods in QItemSelectionModel now consider only items which
are marked as enabled and selectable as part of the selection.
Fixes: QTBUG-93829
Pick-to: 6.2
Change-Id: I4725243ea6b0db4f289ce34ada22c7a9d3282713
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r-- | src/widgets/itemviews/qtreewidget.cpp | 12 | ||||
-rw-r--r-- | src/widgets/itemviews/qtreewidget_p.h | 1 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp index 6f35fe8764..e54bb5eea0 100644 --- a/src/widgets/itemviews/qtreewidget.cpp +++ b/src/widgets/itemviews/qtreewidget.cpp @@ -112,7 +112,9 @@ public: */ QTreeModel::QTreeModel(int columns, QTreeWidget *parent) - : QAbstractItemModel(parent), rootItem(new QTreeWidgetItem), headerItem(new QTreeWidgetItem) + : QAbstractItemModel(*new QTreeModelPrivate, parent), + rootItem(new QTreeWidgetItem), + headerItem(new QTreeWidgetItem) { rootItem->view = parent; rootItem->itemFlags = Qt::ItemIsDropEnabled; @@ -3365,6 +3367,14 @@ bool QTreeWidget::event(QEvent *e) return QTreeView::event(e); } +/*! + see QTBUG-94546 +*/ +void QTreeModelPrivate::executePendingOperations() const +{ + q_func()->executePendingSort(); +} + QT_END_NAMESPACE #include "moc_qtreewidget.cpp" diff --git a/src/widgets/itemviews/qtreewidget_p.h b/src/widgets/itemviews/qtreewidget_p.h index 1f10b06358..65d52bf2bc 100644 --- a/src/widgets/itemviews/qtreewidget_p.h +++ b/src/widgets/itemviews/qtreewidget_p.h @@ -181,6 +181,7 @@ QT_END_INCLUDE_NAMESPACE class QTreeModelPrivate : public QAbstractItemModelPrivate { Q_DECLARE_PUBLIC(QTreeModel) + void executePendingOperations() const override; }; class QTreeWidgetItemPrivate |