diff options
Diffstat (limited to 'tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp')
-rw-r--r-- | tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp | 47 |
1 files changed, 43 insertions, 4 deletions
diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp index fa7f9596da..d0e6407283 100644 --- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp +++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp @@ -159,6 +159,7 @@ private slots: void taskQTBUG_34717_collapseAtBottom(); void task20345_sortChildren(); void getMimeDataWithInvalidItem(); + void testVisualItemRect(); public slots: void itemSelectionChanged(); @@ -332,10 +333,19 @@ void tst_QTreeWidget::addTopLevelItem() for (int i = 0; i < 10; ++i) tops << new TreeItem(); int count = tree.topLevelItemCount(); - tree.insertTopLevelItems(100000, tops); - // ### fixme + tree.insertTopLevelItems(count, tops); QCOMPARE(tree.topLevelItemCount(), count + 10); } + + // invalid insert + { + tops.clear(); + for (int i = 0; i < 10; ++i) + tops << new TreeItem(); + int count = tree.topLevelItemCount(); + tree.insertTopLevelItems(100000, tops); // should be a no-op + QCOMPARE(tree.topLevelItemCount(), count); + } } void tst_QTreeWidget::currentItem_data() @@ -3269,7 +3279,7 @@ void tst_QTreeWidget::task239150_editorWidth() QVERIFY(tree.itemWidget(&item, 0) == 0); tree.editItem(&item); QVERIFY(tree.itemWidget(&item, 0)); - QVERIFY(tree.itemWidget(&item, 0)->width() >= minWidth + tree.fontMetrics().width(item.text(0))); + QVERIFY(tree.itemWidget(&item, 0)->width() >= minWidth + tree.fontMetrics().horizontalAdvance(item.text(0))); } } @@ -3449,9 +3459,38 @@ void tst_QTreeWidget::getMimeDataWithInvalidItem() { CustomTreeWidget w; QTest::ignoreMessage(QtWarningMsg, "QTreeWidget::mimeData: Null-item passed"); - QMimeData *md = w.mimeData(QList<QTreeWidgetItem*>() << Q_NULLPTR); + QMimeData *md = w.mimeData(QList<QTreeWidgetItem*>() << nullptr); QVERIFY(!md); } +// visualItemRect returned a wrong rect when the columns were moved +// (-> logical index != visual index). see QTBUG-28733 +void tst_QTreeWidget::testVisualItemRect() +{ + QTreeWidget tw; + tw.setColumnCount(2); + QTreeWidgetItem *item = new QTreeWidgetItem(&tw); + item->setText(0, "text 0"); + item->setText(1, "text 1"); + + static const int sectionSize = 30; + tw.header()->setStretchLastSection(false); + tw.header()->setMinimumSectionSize(sectionSize); + tw.header()->resizeSection(0, sectionSize); + tw.header()->resizeSection(1, sectionSize); + tw.setRootIsDecorated(false); + tw.show(); + QVERIFY(QTest::qWaitForWindowExposed(&tw)); + + QRect r = tw.visualItemRect(item); + QCOMPARE(r.width(), sectionSize * 2); // 2 columns + tw.header()->moveSection(1, 0); + r = tw.visualItemRect(item); + QCOMPARE(r.width(), sectionSize * 2); // 2 columns + tw.hideColumn(0); + r = tw.visualItemRect(item); + QCOMPARE(r.width(), sectionSize); +} + QTEST_MAIN(tst_QTreeWidget) #include "tst_qtreewidget.moc" |