diff options
Diffstat (limited to 'tests/auto/widgets/itemviews')
15 files changed, 236 insertions, 111 deletions
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp index eed38752d9..3a17f7c690 100644 --- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp +++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp @@ -250,6 +250,7 @@ private slots: void QTBUG39324_settingSameInstanceOfIndexWidget(); void sizeHintChangeTriggersLayout(); void shiftSelectionAfterChangingModelContents(); + void QTBUG48968_reentrant_updateEditorGeometries(); }; class MyAbstractItemDelegate : public QAbstractItemDelegate @@ -1036,7 +1037,7 @@ void tst_QAbstractItemView::dragAndDropOnChild() ++successes; } - QVERIFY(successes == 0); + QCOMPARE(successes, 0); } #endif // 0 @@ -1214,7 +1215,7 @@ void tst_QAbstractItemView::setCurrentIndex() view->setModel(model); view->setCurrentIndex(model->index(0,0)); - QVERIFY(view->currentIndex() == model->index(0,0)); + QCOMPARE(view->currentIndex(), model->index(0,0)); view->setCurrentIndex(model->index(1,0)); QVERIFY(view->currentIndex() == model->index(result ? 1 : 0,0)); } @@ -1990,5 +1991,42 @@ void tst_QAbstractItemView::shiftSelectionAfterChangingModelContents() QVERIFY(selected.contains(indexE)); } +void tst_QAbstractItemView::QTBUG48968_reentrant_updateEditorGeometries() +{ + + QStandardItemModel *m = new QStandardItemModel(this); + for (int i=0; i<10; ++i) { + QStandardItem *item = new QStandardItem(QString("Item number %1").arg(i)); + item->setEditable(true); + for (int j=0; j<5; ++j) { + QStandardItem *child = new QStandardItem(QString("Child Item number %1").arg(j)); + item->setChild(j, 0, child); + } + m->setItem(i, 0, item); + } + + QTreeView tree; + tree.setModel(m); + tree.setRootIsDecorated(false); + QObject::connect(&tree, SIGNAL(doubleClicked(QModelIndex)), &tree, SLOT(setRootIndex(QModelIndex))); + tree.show(); + QTest::qWaitForWindowActive(&tree); + + // Trigger editing idx + QModelIndex idx = m->index(1, 0); + const QPoint pos = tree.visualRect(idx).center(); + QTest::mouseClick(tree.viewport(), Qt::LeftButton, Qt::NoModifier, pos); + QTest::mouseDClick(tree.viewport(), Qt::LeftButton, Qt::NoModifier, pos); + + // Add more children to idx + QStandardItem *item = m->itemFromIndex(idx); + for (int j=5; j<10; ++j) { + QStandardItem *child = new QStandardItem(QString("Child Item number %1").arg(j)); + item->setChild(j, 0, child); + } + + // No crash, all fine. +} + QTEST_MAIN(tst_QAbstractItemView) #include "tst_qabstractitemview.moc" diff --git a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp index f5e6facaad..6645da727c 100644 --- a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp +++ b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp @@ -292,7 +292,7 @@ void tst_QColumnView::grips() for (int i = 0 ; i < list.count(); ++i) { if (QAbstractItemView *view = qobject_cast<QAbstractItemView*>(list.at(i))) { if (view->isVisible()) - QVERIFY(view->cornerWidget() == 0); + QVERIFY(!view->cornerWidget()); } } } @@ -587,7 +587,7 @@ void tst_QColumnView::selectAll() QVERIFY(view.selectionModel()->selectedIndexes().count() > 0); view.setCurrentIndex(QModelIndex()); - QVERIFY(view.selectionModel()->selectedIndexes().count() == 0); + QCOMPARE(view.selectionModel()->selectedIndexes().count(), 0); } void tst_QColumnView::clicked() diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp index 21e4b82366..55fcf04846 100644 --- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp +++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp @@ -239,6 +239,8 @@ private slots: void testStreamWithHide(); void testStylePosition(); + void sizeHintCrash(); + protected: void setupTestData(bool use_reset_model = false); void additionalInit(); @@ -403,7 +405,7 @@ void tst_QHeaderView::init() view = new QHeaderView(Qt::Vertical,topLevel); // Some initial value tests before a model is added QCOMPARE(view->length(), 0); - QVERIFY(view->sizeHint() == QSize(0,0)); + QCOMPARE(view->sizeHint(), QSize(0,0)); QCOMPARE(view->sectionSizeHint(0), -1); /* @@ -925,9 +927,9 @@ void tst_QHeaderView::moveSection() QFETCH(QList<int>, logical); QFETCH(int, count); - QVERIFY(from.count() == to.count()); - QVERIFY(from.count() == moved.count()); - QVERIFY(view->count() == logical.count()); + QCOMPARE(from.count(), to.count()); + QCOMPARE(from.count(), moved.count()); + QCOMPARE(view->count(), logical.count()); QSignalSpy spy1(view, SIGNAL(sectionMoved(int,int,int))); QCOMPARE(view->sectionsMoved(), false); @@ -1370,15 +1372,15 @@ void tst_QHeaderView::unhideSection() QCOMPARE(view->sectionsHidden(), false); view->setSectionHidden(0, true); QCOMPARE(view->sectionsHidden(), true); - QVERIFY(view->sectionSize(0) == 0); + QCOMPARE(view->sectionSize(0), 0); view->setSectionResizeMode(QHeaderView::Interactive); view->setSectionHidden(0, false); QVERIFY(view->sectionSize(0) > 0); view->setSectionHidden(0, true); - QVERIFY(view->sectionSize(0) == 0); + QCOMPARE(view->sectionSize(0), 0); view->setSectionHidden(0, true); - QVERIFY(view->sectionSize(0) == 0); + QCOMPARE(view->sectionSize(0), 0); view->setSectionResizeMode(QHeaderView::Stretch); view->setSectionHidden(0, false); QVERIFY(view->sectionSize(0) > 0); @@ -1645,7 +1647,7 @@ void tst_QHeaderView::saveRestore() QByteArray s2 = h2.saveState(); - QVERIFY(s1 == s2); + QCOMPARE(s1, s2); QVERIFY(!h2.restoreState(QByteArrayLiteral("Garbage"))); // QTBUG-40462 @@ -1659,7 +1661,7 @@ void tst_QHeaderView::saveRestore() int sectionItemsLengthTotal = 0; for (int i = 0; i < h2.count(); ++i) sectionItemsLengthTotal += h2.sectionSize(i); - QVERIFY(sectionItemsLengthTotal == h2.length()); + QCOMPARE(sectionItemsLengthTotal, h2.length()); // Buggy setting where sum(sectionItems) != length. Check false is returned and this corrupted // state isn't restored @@ -1676,8 +1678,8 @@ void tst_QHeaderView::saveRestore() // Check setting is correctly recognized as corrupted QVERIFY(!h2.restoreState(settings_buggy_length)); // Check nothing has been actually restored - QVERIFY(h2.length() == old_length); - QVERIFY(h2.saveState() == old_state); + QCOMPARE(h2.length(), old_length); + QCOMPARE(h2.saveState(), old_state); } void tst_QHeaderView::defaultSectionSizeTest() @@ -1699,7 +1701,7 @@ void tst_QHeaderView::defaultSectionSizeTest() // no hidden Sections hv->resizeSection(1, 0); hv->setDefaultSectionSize(defaultSize); - QVERIFY(hv->sectionSize(1) == defaultSize); + QCOMPARE(hv->sectionSize(1), defaultSize); // with hidden sections hv->resizeSection(1, 0); @@ -2277,7 +2279,7 @@ void tst_QHeaderView::QTBUG14242_hideSectionAutoSize() for (int u = 0; u < hv->count(); ++u) calced_length += hv->sectionSize(u); - QVERIFY(calced_length == afterlength); + QCOMPARE(calced_length, afterlength); } void tst_QHeaderView::ensureNoIndexAtLength() @@ -2286,9 +2288,9 @@ void tst_QHeaderView::ensureNoIndexAtLength() QStandardItemModel amodel(4, 4); qtv.setModel(&amodel); QHeaderView *hv = qtv.verticalHeader(); - QVERIFY(hv->visualIndexAt(hv->length()) == -1); + QCOMPARE(hv->visualIndexAt(hv->length()), -1); hv->resizeSection(hv->count() - 1, 0); - QVERIFY(hv->visualIndexAt(hv->length()) == -1); + QCOMPARE(hv->visualIndexAt(hv->length()), -1); } void tst_QHeaderView::offsetConsistent() @@ -2307,7 +2309,7 @@ void tst_QHeaderView::offsetConsistent() hv->hideSection(sectionToHide); hv->setOffsetToSectionPosition(150); int offset2 = hv->offset(); - QVERIFY(offset1 == offset2); + QCOMPARE(offset1, offset2); // Ensure that hidden indexes (still) is considered. hv->resizeSection(sectionToHide, hv->sectionSize(200) * 2); hv->setOffsetToSectionPosition(800); @@ -2600,8 +2602,8 @@ void tst_QHeaderView::logicalIndexAtTest() //qDebug() << "logicalIndexAtTest" << check1 << check2; const int precalced_check1 = 106327; const int precalced_check2 = 29856418; - QVERIFY(precalced_check1 == check1); - QVERIFY(precalced_check2 == check2); + QCOMPARE(precalced_check1, check1); + QCOMPARE(precalced_check2, check2); const int precalced_results[] = { 1145298384, -1710423344, -650981936, 372919464, -1544372176, -426463328, 12124 }; calculateAndCheck(__LINE__, precalced_results); @@ -2628,8 +2630,8 @@ void tst_QHeaderView::visualIndexAtTest() //qDebug() << "visualIndexAtTest" << check1 << check2; const int precalced_check1 = 72665; const int precalced_check2 = 14015890; - QVERIFY(precalced_check1 == check1); - QVERIFY(precalced_check2 == check2); + QCOMPARE(precalced_check1, check1); + QCOMPARE(precalced_check2, check2); const int precalced_results[] = { 1145298384, -1710423344, -1457520212, 169223959, 557466160, -324939600, 5453 }; calculateAndCheck(__LINE__, precalced_results); @@ -2879,5 +2881,15 @@ void tst_QHeaderView::testStylePosition() QCOMPARE(proxy.lastPosition, QStyleOptionHeader::OnlyOneSection); } +void tst_QHeaderView::sizeHintCrash() +{ + QTreeView treeView; + QStandardItemModel *model = new QStandardItemModel(&treeView); + model->appendRow(new QStandardItem("QTBUG-48543")); + treeView.setModel(model); + treeView.header()->sizeHintForColumn(0); + treeView.header()->sizeHintForRow(0); +} + QTEST_MAIN(tst_QHeaderView) #include "tst_qheaderview.moc" diff --git a/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp b/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp index 439eeff005..25f27cb0c7 100644 --- a/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp +++ b/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp @@ -804,9 +804,9 @@ void tst_QItemDelegate::dateTimeEditor() dateTimeEditor->setTime(time.addSecs(600)); widget.clearFocus(); - QVERIFY(item1->data(Qt::EditRole).userType() == QMetaType::QTime); - QVERIFY(item2->data(Qt::EditRole).userType() == QMetaType::QDate); - QVERIFY(item3->data(Qt::EditRole).userType() == QMetaType::QDateTime); + QCOMPARE(item1->data(Qt::EditRole).userType(), int(QMetaType::QTime)); + QCOMPARE(item2->data(Qt::EditRole).userType(), int(QMetaType::QDate)); + QCOMPARE(item3->data(Qt::EditRole).userType(), int(QMetaType::QDateTime)); } // A delegate where we can either enforce a certain widget or use the standard widget. @@ -901,9 +901,9 @@ void tst_QItemDelegate::dateAndTimeEditorTest2() s.setData(i1, datetime2); editor = w.fastEdit(i1); timeEdit = qobject_cast<QTimeEdit*>(editor); - QVERIFY(timeEdit == 0); + QVERIFY(!timeEdit); dateEdit = qobject_cast<QDateEdit*>(editor); - QVERIFY(dateEdit == 0); + QVERIFY(!dateEdit); dateTimeEdit = qobject_cast<QDateTimeEdit*>(editor); QVERIFY(dateTimeEdit); QCOMPARE(dateTimeEdit->dateTime(), datetime2); @@ -1154,7 +1154,7 @@ void tst_QItemDelegate::editorEvent_data() QTest::newRow("unchecked, tristate, release") << (int)(Qt::Unchecked) - << (int)(defaultFlags | Qt::ItemIsTristate) + << (int)(defaultFlags | Qt::ItemIsAutoTristate) << true << (int)(QEvent::MouseButtonRelease) << (int)(Qt::LeftButton) @@ -1163,7 +1163,7 @@ void tst_QItemDelegate::editorEvent_data() QTest::newRow("partially checked, tristate, release") << (int)(Qt::PartiallyChecked) - << (int)(defaultFlags | Qt::ItemIsTristate) + << (int)(defaultFlags | Qt::ItemIsAutoTristate) << true << (int)(QEvent::MouseButtonRelease) << (int)(Qt::LeftButton) @@ -1172,7 +1172,7 @@ void tst_QItemDelegate::editorEvent_data() QTest::newRow("checked, tristate, release") << (int)(Qt::Checked) - << (int)(defaultFlags | Qt::ItemIsTristate) + << (int)(defaultFlags | Qt::ItemIsAutoTristate) << true << (int)(QEvent::MouseButtonRelease) << (int)(Qt::LeftButton) diff --git a/tests/auto/widgets/itemviews/qitemview/tst_qitemview.cpp b/tests/auto/widgets/itemviews/qitemview/tst_qitemview.cpp index 3a6f1f933d..8fd86ea467 100644 --- a/tests/auto/widgets/itemviews/qitemview/tst_qitemview.cpp +++ b/tests/auto/widgets/itemviews/qitemview/tst_qitemview.cpp @@ -483,6 +483,7 @@ void tst_QItemView::spider() view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll); view->setModel(treeModel); view->show(); + QVERIFY(QTest::qWaitForWindowActive(view)); #if defined(Q_OS_WINCE) srandom(0); #else @@ -551,7 +552,7 @@ void tst_QItemView::visualRect() QFETCH(bool, displays); if (!displays){ - QVERIFY(view->visualRect(topIndex) == QRect()); + QCOMPARE(view->visualRect(topIndex), QRect()); return; } @@ -559,15 +560,15 @@ void tst_QItemView::visualRect() view->show(); QVERIFY(view->visualRect(topIndex) != QRect()); - QVERIFY(topIndex == view->indexAt(view->visualRect(topIndex).center())); - QVERIFY(topIndex == view->indexAt(view->visualRect(topIndex).bottomLeft())); - QVERIFY(topIndex == view->indexAt(view->visualRect(topIndex).bottomRight())); - QVERIFY(topIndex == view->indexAt(view->visualRect(topIndex).topLeft())); - QVERIFY(topIndex == view->indexAt(view->visualRect(topIndex).topRight())); + QCOMPARE(topIndex, view->indexAt(view->visualRect(topIndex).center())); + QCOMPARE(topIndex, view->indexAt(view->visualRect(topIndex).bottomLeft())); + QCOMPARE(topIndex, view->indexAt(view->visualRect(topIndex).bottomRight())); + QCOMPARE(topIndex, view->indexAt(view->visualRect(topIndex).topLeft())); + QCOMPARE(topIndex, view->indexAt(view->visualRect(topIndex).topRight())); testViews->hideIndexes(view); QModelIndex hiddenIndex = treeModel->index(1, 0); - QVERIFY(view->visualRect(hiddenIndex) == QRect()); + QCOMPARE(view->visualRect(hiddenIndex), QRect()); } void tst_QItemView::walkScreen(QAbstractItemView *view) @@ -615,7 +616,7 @@ void walkIndex(QModelIndex index, QAbstractItemView *view) if (view->indexAt(point) != index) { qDebug() << "index" << index << "visualRect" << visualRect << point << view->indexAt(point); } - QVERIFY(view->indexAt(point) == index); + QCOMPARE(view->indexAt(point), index); } } diff --git a/tests/auto/widgets/itemviews/qlistview/qlistview.pro b/tests/auto/widgets/itemviews/qlistview/qlistview.pro index 0623fc8ede..509303b62e 100644 --- a/tests/auto/widgets/itemviews/qlistview/qlistview.pro +++ b/tests/auto/widgets/itemviews/qlistview/qlistview.pro @@ -3,3 +3,4 @@ TARGET = tst_qlistview QT += widgets gui-private widgets-private core-private testlib SOURCES += tst_qlistview.cpp win32:!wince:!winrt: LIBS += -luser32 +linux*: CONFIG += insignificant_test # Crashes diff --git a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp index 1b21096b44..5b206af357 100644 --- a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp +++ b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp @@ -38,6 +38,7 @@ #include <qapplication.h> #include <qlistview.h> #include <private/qlistview_p.h> +#include <private/qcoreapplication_p.h> #include <qlistwidget.h> #include <qitemdelegate.h> #include <qstandarditemmodel.h> @@ -150,6 +151,7 @@ private slots: void testViewOptions(); void taskQTBUG_39902_mutualScrollBars_data(); void taskQTBUG_39902_mutualScrollBars(); + void horizontalScrollingByVerticalWheelEvents(); }; // Testing get/set functions @@ -1209,7 +1211,7 @@ void tst_QListView::scrollTo() list << "Short item"; model.setStringList(list); lv.setModel(&model); - lv.setFixedSize(100, 200); + lv.setFixedSize(110, 200); topLevel.show(); QVERIFY(QTest::qWaitForWindowExposed(&topLevel)); @@ -2018,8 +2020,7 @@ void tst_QListView::styleOptionViewItem() public: void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { - QVERIFY(qstyleoption_cast<const QStyleOptionViewItemV4 *>(&option)); - QStyleOptionViewItemV4 opt(option); + QStyleOptionViewItem opt(option); initStyleOption(&opt, index); QCOMPARE(opt.index, index); @@ -2445,5 +2446,52 @@ void tst_QListView::taskQTBUG_39902_mutualScrollBars() QTRY_VERIFY(view->verticalScrollBar()->isVisible()); } +void tst_QListView::horizontalScrollingByVerticalWheelEvents() +{ + QListView lv; + lv.setWrapping(true); + + TestDelegate *delegate = new TestDelegate(&lv); + delegate->m_sizeHint = QSize(100, 100); + lv.setItemDelegate(delegate); + + QtTestModel model; + model.colCount = 1; + model.rCount = 100; + + lv.setModel(&model); + + lv.resize(300, 300); + lv.show(); + QTest::qWaitForWindowExposed(&lv); + + QPoint globalPos = lv.geometry().center(); + QPoint pos = lv.viewport()->geometry().center(); + + QWheelEvent wheelDownEvent(pos, globalPos, QPoint(0, 0), QPoint(0, -120), -120, Qt::Vertical, 0, 0); + QWheelEvent wheelUpEvent(pos, globalPos, QPoint(0, 0), QPoint(0, 120), 120, Qt::Vertical, 0, 0); + QWheelEvent wheelLeftDownEvent(pos, globalPos, QPoint(0, 0), QPoint(120, -120), -120, Qt::Vertical, 0, 0); + + int hValue = lv.horizontalScrollBar()->value(); + QApplication::sendEvent(lv.viewport(), &wheelDownEvent); + QVERIFY(lv.horizontalScrollBar()->value() > hValue); + + QApplication::sendEvent(lv.viewport(), &wheelUpEvent); + QCOMPARE(lv.horizontalScrollBar()->value(), hValue); + + QApplication::sendEvent(lv.viewport(), &wheelLeftDownEvent); + QCOMPARE(lv.horizontalScrollBar()->value(), hValue); + + // ensure that vertical wheel events are not converted when vertical + // scroll bar is not visible but vertical scrolling is possible + lv.setWrapping(false); + lv.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + QApplication::processEvents(); + + int vValue = lv.verticalScrollBar()->value(); + QApplication::sendEvent(lv.viewport(), &wheelDownEvent); + QVERIFY(lv.verticalScrollBar()->value() > vValue); +} + QTEST_MAIN(tst_QListView) #include "tst_qlistview.moc" diff --git a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp index dcbdbe824a..ecf72613da 100644 --- a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp +++ b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp @@ -427,9 +427,9 @@ void tst_QListWidget::currentItem() // actual test QModelIndex currentIndex = testWidget->selectionModel()->currentIndex(); if (currentIndex.isValid()) - QVERIFY(testWidget->currentItem() == testWidget->item(currentIndex.row())); + QCOMPARE(testWidget->currentItem(), testWidget->item(currentIndex.row())); else - QVERIFY(testWidget->currentItem() == (QListWidgetItem*)0); + QCOMPARE(testWidget->currentItem(), (QListWidgetItem*)0); } void tst_QListWidget::currentRow() @@ -742,7 +742,7 @@ void tst_QListWidget::selectedItems() QFETCH(IntList, selectedRows); QFETCH(IntList, expectedRows); - QVERIFY(testWidget->count() == 0); + QCOMPARE(testWidget->count(), 0); //insert items for (int i=0; i<itemCount; ++i) @@ -1159,7 +1159,7 @@ void tst_QListWidget::setData() QFETCH(int, expectedSignalCount); qRegisterMetaType<QListWidgetItem *>("QListWidgetItem*"); - QVERIFY(roles.count() == values.count()); + QCOMPARE(roles.count(), values.count()); for (int manipulateModel=0; manipulateModel<2; ++manipulateModel) { testWidget->clear(); @@ -1711,7 +1711,7 @@ void tst_QListWidget::mimeData() QVERIFY(data->hasFormat(format)); QVERIFY(data2->hasFormat(format)); - QVERIFY(data->data(format) == data2->data(format)); + QCOMPARE(data->data(format), data2->data(format)); delete data; delete data2; diff --git a/tests/auto/widgets/itemviews/qtableview/BLACKLIST b/tests/auto/widgets/itemviews/qtableview/BLACKLIST index fc231a4e30..329010a86e 100644 --- a/tests/auto/widgets/itemviews/qtableview/BLACKLIST +++ b/tests/auto/widgets/itemviews/qtableview/BLACKLIST @@ -1,2 +1,4 @@ [moveCursorBiggerJump] osx +[resizeColumnsToContents] +ubuntu-14.04 diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp index 75f77f8107..e5abd6bc46 100644 --- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp +++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp @@ -2249,11 +2249,11 @@ void tst_QTableView::resizeColumnsToContents_data() QTest::addColumn<int>("rowHeight"); QTest::addColumn<int>("columnWidth"); - QTest::newRow("10x10 grid shown 40x40") - << 10 << 10 << false << 40 << 40 << 40 << 40; + QTest::newRow("10x10 grid not shown 60x60") + << 10 << 10 << false << 60 << 60 << 60 << 60; - QTest::newRow("10x10 grid not shown 40x40") - << 10 << 10 << true << 40 << 40 << 41 << 41; + QTest::newRow("10x10 grid shown 60x60") + << 10 << 10 << true << 60 << 60 << 61 << 61; } void tst_QTableView::resizeColumnsToContents() @@ -4051,9 +4051,9 @@ void tst_QTableView::mouseWheel() QWheelEvent verticalEvent(pos, delta, 0, 0, Qt::Vertical); QWheelEvent horizontalEvent(pos, delta, 0, 0, Qt::Horizontal); QApplication::sendEvent(view.viewport(), &horizontalEvent); - QVERIFY(qAbs(view.horizontalScrollBar()->value() - horizontalPositon) < 10); + QVERIFY(qAbs(view.horizontalScrollBar()->value() - horizontalPositon) < 15); QApplication::sendEvent(view.viewport(), &verticalEvent); - QVERIFY(qAbs(view.verticalScrollBar()->value() - verticalPosition) < 10); + QVERIFY(qAbs(view.verticalScrollBar()->value() - verticalPosition) < 15); } #endif // !QT_NO_WHEELEVENT diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp index 36bc23910c..ea31fd19dd 100644 --- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp +++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp @@ -94,6 +94,7 @@ private slots: void task262056_sortDuplicate(); void itemWithHeaderItems(); void mimeData(); + void selectedRowAfterSorting(); private: QTableWidget *testWidget; @@ -196,9 +197,9 @@ void tst_QTableWidget::clearContents() { QTableWidgetItem *item = new QTableWidgetItem("test"); testWidget->setHorizontalHeaderItem(0, item); - QVERIFY(testWidget->horizontalHeaderItem(0) == item); + QCOMPARE(testWidget->horizontalHeaderItem(0), item); testWidget->clearContents(); - QVERIFY(testWidget->horizontalHeaderItem(0) == item); + QCOMPARE(testWidget->horizontalHeaderItem(0), item); } void tst_QTableWidget::clear() @@ -1559,11 +1560,29 @@ void tst_QTableWidget::mimeData() QVERIFY(data->hasFormat(format)); QVERIFY(data2->hasFormat(format)); - QVERIFY(data->data(format) == data2->data(format)); + QCOMPARE(data->data(format), data2->data(format)); delete data; delete data2; } +void tst_QTableWidget::selectedRowAfterSorting() +{ + TestTableWidget table(3,3); + table.setSelectionBehavior(QAbstractItemView::SelectRows); + for (int r = 0; r < 3; r++) + for (int c = 0; c < 3; c++) + table.setItem(r,c,new QTableWidgetItem(QStringLiteral("0"))); + QHeaderView *localHorizontalHeader = table.horizontalHeader(); + localHorizontalHeader->setSortIndicator(1,Qt::DescendingOrder); + table.setProperty("sortingEnabled",true); + table.selectRow(1); + table.item(1,1)->setText("9"); + QCOMPARE(table.selectedItems().count(),3); + foreach (QTableWidgetItem *item, table.selectedItems()) { + QCOMPARE(item->row(),0); + } +} + QTEST_MAIN(tst_QTableWidget) #include "tst_qtablewidget.moc" diff --git a/tests/auto/widgets/itemviews/qtreeview/qtreeview.pro b/tests/auto/widgets/itemviews/qtreeview/qtreeview.pro index 3abd58e73d..e8406dab7b 100644 --- a/tests/auto/widgets/itemviews/qtreeview/qtreeview.pro +++ b/tests/auto/widgets/itemviews/qtreeview/qtreeview.pro @@ -4,3 +4,5 @@ QT += widgets testlib QT += widgets-private gui-private core-private SOURCES += tst_qtreeview.cpp HEADERS += ../../../../shared/fakedirmodel.h + +win32: CONFIG += insignificant_test diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp index 340637513c..033464c9db 100644 --- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp @@ -253,7 +253,6 @@ private slots: void taskQTBUG_25333_adjustViewOptionsForIndex(); void taskQTBUG_18539_emitLayoutChanged(); void taskQTBUG_8176_emitOnExpandAll(); - void taskQTBUG_34717_collapseAtBottom(); void taskQTBUG_37813_crash(); void taskQTBUG_45697_crash(); void testInitialFocus(); @@ -2365,7 +2364,7 @@ void tst_QTreeView::selectionOrderTest() void tst_QTreeView::selection() { - if (qApp->platformName().toLower() == QLatin1String("wayland")) + if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive)) QSKIP("Wayland: This causes a crash triggered by setVisible(false)"); QTreeView treeView; @@ -3076,7 +3075,7 @@ void tst_QTreeView::styleOptionViewItem() { class MyDelegate : public QStyledItemDelegate { - static QString posToString(QStyleOptionViewItemV4::ViewItemPosition pos) { + static QString posToString(QStyleOptionViewItem::ViewItemPosition pos) { static const char* s_pos[] = { "Invalid", "Beginning", "Middle", "End", "OnlyOne" }; return s_pos[pos]; } @@ -3089,8 +3088,7 @@ void tst_QTreeView::styleOptionViewItem() void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const { - QVERIFY(qstyleoption_cast<const QStyleOptionViewItemV4 *>(&option)); - QStyleOptionViewItemV4 opt(option); + QStyleOptionViewItem opt(option); initStyleOption(&opt, index); QVERIFY(!opt.text.isEmpty()); @@ -3098,20 +3096,20 @@ void tst_QTreeView::styleOptionViewItem() //qDebug() << index << opt.text; if (allCollapsed) - QCOMPARE(!(opt.features & QStyleOptionViewItemV2::Alternate), !(index.row() % 2)); - QCOMPARE(!(opt.features & QStyleOptionViewItemV2::HasCheckIndicator), !opt.text.contains("Checkable")); + QCOMPARE(!(opt.features & QStyleOptionViewItem::Alternate), !(index.row() % 2)); + QCOMPARE(!(opt.features & QStyleOptionViewItem::HasCheckIndicator), !opt.text.contains("Checkable")); if (opt.text.contains("Beginning")) - QCOMPARE(posToString(opt.viewItemPosition), posToString(QStyleOptionViewItemV4::Beginning)); + QCOMPARE(posToString(opt.viewItemPosition), posToString(QStyleOptionViewItem::Beginning)); if (opt.text.contains("Middle")) - QCOMPARE(posToString(opt.viewItemPosition), posToString(QStyleOptionViewItemV4::Middle)); + QCOMPARE(posToString(opt.viewItemPosition), posToString(QStyleOptionViewItem::Middle)); if (opt.text.contains("End")) - QCOMPARE(posToString(opt.viewItemPosition), posToString(QStyleOptionViewItemV4::End)); + QCOMPARE(posToString(opt.viewItemPosition), posToString(QStyleOptionViewItem::End)); if (opt.text.contains("OnlyOne")) - QCOMPARE(posToString(opt.viewItemPosition), posToString(QStyleOptionViewItemV4::OnlyOne)); + QCOMPARE(posToString(opt.viewItemPosition), posToString(QStyleOptionViewItem::OnlyOne)); if (opt.text.contains("Checked")) QCOMPARE(opt.checkState, Qt::Checked); @@ -3657,7 +3655,7 @@ void tst_QTreeView::task202039_closePersistentEditor() QVERIFY(view.indexWidget(current)); view.closePersistentEditor(current); - QVERIFY(view.indexWidget(current) == 0); + QVERIFY(!view.indexWidget(current)); //here was the bug: closing the persistent editor would not reset the state //and it was impossible to go into editinon again @@ -4193,7 +4191,7 @@ void tst_QTreeView::taskQTBUG_25333_adjustViewOptionsForIndex() #ifdef QT_BUILD_INTERNAL { - QStyleOptionViewItemV4 option; + QStyleOptionViewItem option; view.aiv_priv()->adjustViewOptionsForIndex(&option, model.indexFromItem(item1)); @@ -4283,35 +4281,6 @@ void tst_QTreeView::taskQTBUG_8176_emitOnExpandAll() QCOMPARE(spy2.size(), 1); // item2 is collapsed } -// From QTBUG_34717 (QTreeWidget crashes when scrolling to the end -// of an expanded tree, then collapse all) -// The test passes simply if it doesn't crash. -void tst_QTreeView::taskQTBUG_34717_collapseAtBottom() -{ - QTreeWidget treeWidget; - treeWidget.header()->setSectionResizeMode(QHeaderView::ResizeToContents); - treeWidget.setColumnCount(2); - QTreeWidgetItem *mainItem = new QTreeWidgetItem(&treeWidget, QStringList() << "Root"); - for (int i = 0; i < 200; ++i) { - QTreeWidgetItem *item = new QTreeWidgetItem(mainItem, QStringList(QString("Item"))); - new QTreeWidgetItem(item, QStringList() << "Child" << "1"); - new QTreeWidgetItem(item, QStringList() << "Child" << "2"); - new QTreeWidgetItem(item, QStringList() << "Child" << "3"); - } - treeWidget.show(); - treeWidget.expandAll(); - treeWidget.scrollToBottom(); - treeWidget.collapseAll(); - - treeWidget.setAnimated(true); - treeWidget.expandAll(); - treeWidget.scrollToBottom(); - mainItem->setExpanded(false); - - PublicView *pview = (PublicView*) &treeWidget; - QVERIFY(pview->sizeHintForColumn(1) >= 0); -} - void tst_QTreeView::testInitialFocus() { QTreeWidget treeWidget; diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp index 5c881369a0..117c53a2bb 100644 --- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp +++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp @@ -161,6 +161,7 @@ private slots: void taskQTBUG2844_visualItemRect(); void setChildIndicatorPolicy(); + void taskQTBUG_34717_collapseAtBottom(); void task20345_sortChildren(); void getMimeDataWithInvalidItem(); @@ -1037,7 +1038,7 @@ void tst_QTreeWidget::checkState() QCOMPARE(firstChild->checkState(0), Qt::Checked); QCOMPARE(seccondChild->checkState(0), Qt::Unchecked); - item->setFlags(item->flags()|Qt::ItemIsTristate); + item->setFlags(item->flags()|Qt::ItemIsAutoTristate); QCOMPARE(item->checkState(0), Qt::PartiallyChecked); QCOMPARE(firstChild->checkState(0), Qt::Checked); QCOMPARE(seccondChild->checkState(0), Qt::Unchecked); @@ -1586,7 +1587,7 @@ void tst_QTreeWidget::scrollToItem() testWidget->setHeaderLabels(QStringList() << "foo"); testWidget->scrollToItem(search); - QVERIFY(search->text(0) == "111"); + QCOMPARE(search->text(0), QLatin1String("111")); bar = search->parent(); QVERIFY(testWidget->isItemExpanded(bar)); @@ -2287,7 +2288,7 @@ void tst_QTreeWidget::insertExpandedItemsWithSorting() QCOMPARE(parent->childCount(), childText.count()); QVERIFY(parent->isExpanded()); } - QVERIFY(tree.model()->rowCount() == parentText.count()); + QCOMPARE(tree.model()->rowCount(), parentText.count()); // verify that the items are still expanded foreach (QTreeWidgetItem *item, items) { @@ -2659,7 +2660,7 @@ void tst_QTreeWidget::sortedIndexOfChild() tw.sortItems(0, (Qt::SortOrder)sortOrder); tw.expandAll(); - QVERIFY(itms.count() == expectedIndexes.count()); + QCOMPARE(itms.count(), expectedIndexes.count()); for (int j = 0; j < expectedIndexes.count(); ++j) QCOMPARE(top->indexOfChild(itms.at(j)), expectedIndexes.at(j)); } @@ -3155,11 +3156,11 @@ void tst_QTreeWidget::setSelectionModel() void tst_QTreeWidget::task217309() { QTreeWidgetItem item; - item.setFlags(item.flags() | Qt::ItemIsTristate); + item.setFlags(item.flags() | Qt::ItemIsAutoTristate); QTreeWidgetItem subitem1; - subitem1.setFlags(subitem1.flags() | Qt::ItemIsTristate); + subitem1.setFlags(subitem1.flags() | Qt::ItemIsAutoTristate); QTreeWidgetItem subitem2; - subitem2.setFlags(subitem2.flags() | Qt::ItemIsTristate); + subitem2.setFlags(subitem2.flags() | Qt::ItemIsAutoTristate); item.addChild(&subitem1); item.addChild(&subitem2); subitem1.setCheckState(0, Qt::Checked); @@ -3180,7 +3181,7 @@ void tst_QTreeWidget::nonEditableTristate() QTreeWidget *tree = new QTreeWidget; QTreeWidgetItem *item = new QTreeWidgetItem(); tree->insertTopLevelItem(0, item); - item->setFlags(item->flags() | Qt::ItemIsTristate); + item->setFlags(item->flags() | Qt::ItemIsAutoTristate); item->setCheckState(0, Qt::Unchecked); QTreeWidgetItem *subitem1 = new QTreeWidgetItem(item); subitem1->setCheckState(0, Qt::Unchecked); @@ -3235,7 +3236,7 @@ void tst_QTreeWidget::setCurrentItemExpandsParent() QTreeWidgetItem *i1 = new QTreeWidgetItem(&w, QStringList() << "parent"); QTreeWidgetItem *i2 = new QTreeWidgetItem(i1, QStringList() << "child"); QVERIFY(!i2->isExpanded()); - QVERIFY(w.currentItem() == 0); + QVERIFY(!w.currentItem()); w.setCurrentItem(i2); QVERIFY(!i2->isExpanded()); QCOMPARE(w.currentItem(), i2); @@ -3378,9 +3379,41 @@ void tst_QTreeWidget::setChildIndicatorPolicy() QTRY_COMPARE(delegate.numPaints, 1); } +// From QTBUG_34717 (QTreeWidget crashes when scrolling to the end +// of an expanded tree, then collapse all) +// The test passes simply if it doesn't crash. +void tst_QTreeWidget::taskQTBUG_34717_collapseAtBottom() +{ + struct PublicTreeWidget: public QTreeWidget + { + inline int sizeHintForColumn(int column) const { return QTreeWidget::sizeHintForColumn(column); } + }; + PublicTreeWidget treeWidget; + treeWidget.header()->setSectionResizeMode(QHeaderView::ResizeToContents); + treeWidget.setColumnCount(2); + QTreeWidgetItem *mainItem = new QTreeWidgetItem(&treeWidget, QStringList() << "Root"); + for (int i = 0; i < 200; ++i) { + QTreeWidgetItem *item = new QTreeWidgetItem(mainItem, QStringList(QString("Item"))); + new QTreeWidgetItem(item, QStringList() << "Child" << "1"); + new QTreeWidgetItem(item, QStringList() << "Child" << "2"); + new QTreeWidgetItem(item, QStringList() << "Child" << "3"); + } + treeWidget.show(); + treeWidget.expandAll(); + treeWidget.scrollToBottom(); + treeWidget.collapseAll(); + + treeWidget.setAnimated(true); + treeWidget.expandAll(); + treeWidget.scrollToBottom(); + mainItem->setExpanded(false); + + QVERIFY(treeWidget.sizeHintForColumn(1) >= 0); +} + void tst_QTreeWidget::task20345_sortChildren() { - if (qApp->platformName().toLower() == QLatin1String("wayland")) + if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive)) QSKIP("Wayland: This causes a crash triggered by setVisible(false)"); // This test case is considered successful if it is executed (no crash in sorting) diff --git a/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp b/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp index 490f87a7ef..c52198fa2c 100644 --- a/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp +++ b/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp @@ -1112,13 +1112,13 @@ void tst_QTreeWidgetItemIterator::updateIfModifiedFromWidget() delete item; item = *it; if (expecteditemIsNull) { - QVERIFY(item == 0); + QVERIFY(!item); } else { QVERIFY(item); QCOMPARE(item->text(0), expecteditemvalue); item = *itRemove; if (expectedUpdatedCurrent.isNull()) { - QVERIFY(item == 0); + QVERIFY(!item); } else { QCOMPARE(item->text(0), expectedUpdatedCurrent); } |