diff options
Diffstat (limited to 'tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp')
-rw-r--r-- | tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp index 02d93bd356..25e681a415 100644 --- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp +++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp @@ -1,13 +1,24 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QHeaderView> #include <QLineEdit> #include <QMimeData> +#include <QScrollBar> #include <QSignalSpy> #include <QTableWidget> #include <QTest> +QT_BEGIN_NAMESPACE +QDebug operator<<(QDebug dbg, const QTableWidgetSelectionRange &range) +{ + QDebugStateSaver saver(dbg); + dbg.nospace() << "Range(" << range.topRow() << "," << range.leftColumn() << "->" + << range.bottomRow() << "," << range.rightColumn() << ")"; + return dbg; +} +QT_END_NAMESPACE + class QObjectTableItem : public QObject, public QTableWidgetItem { Q_OBJECT @@ -63,6 +74,7 @@ private slots: void task219380_removeLastRow(); void task262056_sortDuplicate(); void itemWithHeaderItems(); + void checkHeaderItemFlagsConflict(); void mimeData(); void selectedRowAfterSorting(); void search(); @@ -576,7 +588,7 @@ void tst_QTableWidget::selectedSpannedCells_data() QTest::newRow("merge 2 cells in column, select those and one more") << QRect(1, 2, 1, 2) << QPoint(1, 1) << QPoint(1, 3) - << 3 << QTableWidgetSelectionRange(1, 1, 1, 1); + << 1 << QTableWidgetSelectionRange(1, 1, 3, 1); QTest::newRow("merge 2 cells in column, select rows above") << QRect(1, 2, 1, 2) << QPoint(0, 0) << QPoint(3, 1) @@ -588,7 +600,7 @@ void tst_QTableWidget::selectedSpannedCells_data() QTest::newRow("merge 3 cells in row, select those and one more") << QRect(0, 1, 3, 1) << QPoint(0, 1) << QPoint(3, 1) - << 4 << QTableWidgetSelectionRange(1, 0, 1, 0); + << 1 << QTableWidgetSelectionRange(1, 0, 1, 3); QTest::newRow("merge 3 cells in row, select adjacent to right") << QRect(0, 1, 3, 1) << QPoint(3, 0) << QPoint(3, 2) @@ -1555,6 +1567,12 @@ void tst_QTableWidget::sizeHint() QFETCH(Qt::ScrollBarPolicy, scrollBarPolicy); QFETCH(QSize, viewSize); + const QString defaultStyle = QApplication::style()->name(); + QApplication::setStyle("windows"); + const auto resetStyle = qScopeGuard([defaultStyle]{ + QApplication::setStyle(defaultStyle); + }); + QTableWidget view(2, 2); view.setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents); view.setVerticalScrollBarPolicy(scrollBarPolicy); @@ -1574,18 +1592,21 @@ void tst_QTableWidget::sizeHint() QTRY_COMPARE(view.size(), viewSize); } + QApplication::processEvents(); // execute delayed layouts auto sizeHint = view.sizeHint(); view.hide(); QCOMPARE(view.sizeHint(), sizeHint); view.horizontalHeader()->hide(); view.show(); + QApplication::processEvents(); // execute delayed layouts sizeHint = view.sizeHint(); view.hide(); QCOMPARE(view.sizeHint(), sizeHint); view.verticalHeader()->hide(); view.show(); + QApplication::processEvents(); // execute delayed layouts sizeHint = view.sizeHint(); view.hide(); QCOMPARE(view.sizeHint(), sizeHint); @@ -1669,6 +1690,25 @@ void tst_QTableWidget::itemWithHeaderItems() QCOMPARE(table.item(0, 1), nullptr); } +void tst_QTableWidget::checkHeaderItemFlagsConflict() +{ + // QTBUG-113209 + // Check that setting header item doesn't set Qt::ItemNeverHasChildren + // Chech that header items do not emit itemChanged. + QTableWidget table(1, 1); + QSignalSpy itemChangeSpy(&table, &QTableWidget::itemChanged); + QVERIFY(itemChangeSpy.isValid()); + + QTableWidgetItem *item = new QTableWidgetItem("Initial"); + table.setHorizontalHeaderItem(0, item); + + QVERIFY(!(item->flags() & Qt::ItemNeverHasChildren)); + + item->setData(Qt::DisplayRole, "updated"); + + QCOMPARE(itemChangeSpy.size(), 0); +} + class TestTableWidget : public QTableWidget { Q_OBJECT |