summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp')
-rw-r--r--tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp46
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