213 |
213 |
214 void indexRowSizeHint(); |
214 void indexRowSizeHint(); |
215 void addRowsWhileSectionsAreHidden(); |
215 void addRowsWhileSectionsAreHidden(); |
216 void filterProxyModelCrash(); |
216 void filterProxyModelCrash(); |
217 void styleOptionViewItem(); |
217 void styleOptionViewItem(); |
|
218 void keyboardNavigationWithDisabled(); |
218 |
219 |
219 // task-specific tests: |
220 // task-specific tests: |
220 void task174627_moveLeftToRoot(); |
221 void task174627_moveLeftToRoot(); |
221 void task171902_expandWith1stColHidden(); |
222 void task171902_expandWith1stColHidden(); |
222 void task203696_hidingColumnsAndRowsn(); |
223 void task203696_hidingColumnsAndRowsn(); |
235 void task254234_proxySort(); |
236 void task254234_proxySort(); |
236 void task248022_changeSelection(); |
237 void task248022_changeSelection(); |
237 void task245654_changeModelAndExpandAll(); |
238 void task245654_changeModelAndExpandAll(); |
238 void doubleClickedWithSpans(); |
239 void doubleClickedWithSpans(); |
239 void taskQTBUG_6450_selectAllWith1stColumnHidden(); |
240 void taskQTBUG_6450_selectAllWith1stColumnHidden(); |
|
241 void taskQTBUG_9216_setSizeAndUniformRowHeightsWrongRepaint(); |
240 }; |
242 }; |
241 |
243 |
242 class QtTestModel: public QAbstractItemModel |
244 class QtTestModel: public QAbstractItemModel |
243 { |
245 { |
244 public: |
246 public: |
245 QtTestModel(QObject *parent = 0): QAbstractItemModel(parent), |
247 QtTestModel(QObject *parent = 0): QAbstractItemModel(parent), |
246 fetched(false), rows(0), cols(0), levels(INT_MAX), wrongIndex(false) { init(); } |
248 fetched(false), rows(0), cols(0), levels(INT_MAX), wrongIndex(false) { init(); } |
247 |
249 |
248 QtTestModel(int _rows, int _cols, QObject *parent = 0): QAbstractItemModel(parent), |
250 QtTestModel(int _rows, int _cols, QObject *parent = 0): QAbstractItemModel(parent), |
249 rows(_rows), cols(_cols), levels(INT_MAX), wrongIndex(false) { init(); } |
251 fetched(false), rows(_rows), cols(_cols), levels(INT_MAX), wrongIndex(false) { init(); } |
250 |
252 |
251 void init() { |
253 void init() { |
252 decorationsEnabled = false; |
254 decorationsEnabled = false; |
253 } |
255 } |
254 |
256 |
3712 QVERIFY(tree.selectionModel()->hasSelection()); |
3714 QVERIFY(tree.selectionModel()->hasSelection()); |
3713 for (int i = 0; i < nrRows; ++i) |
3715 for (int i = 0; i < nrRows; ++i) |
3714 QVERIFY(tree.selectionModel()->isRowSelected(i, QModelIndex())); |
3716 QVERIFY(tree.selectionModel()->isRowSelected(i, QModelIndex())); |
3715 } |
3717 } |
3716 |
3718 |
|
3719 class TreeViewQTBUG_9216 : public QTreeView |
|
3720 { |
|
3721 Q_OBJECT |
|
3722 public: |
|
3723 void paintEvent(QPaintEvent *event) |
|
3724 { |
|
3725 if (doCompare) |
|
3726 QCOMPARE(event->rect(), viewport()->rect()); |
|
3727 QTreeView::paintEvent(event); |
|
3728 painted++; |
|
3729 } |
|
3730 int painted; |
|
3731 bool doCompare; |
|
3732 }; |
|
3733 |
|
3734 void tst_QTreeView::taskQTBUG_9216_setSizeAndUniformRowHeightsWrongRepaint() |
|
3735 { |
|
3736 QStandardItemModel model(10, 10, this); |
|
3737 for (int row = 0; row < 10; row++) |
|
3738 for (int col = 0; col < 10; col++) |
|
3739 model.setItem(row, col, new QStandardItem(QString("row %0, col %1").arg(row).arg(col))); |
|
3740 TreeViewQTBUG_9216 view; |
|
3741 view.setUniformRowHeights(true); |
|
3742 view.setModel(&model); |
|
3743 view.painted = 0; |
|
3744 view.doCompare = false; |
|
3745 view.show(); |
|
3746 QTest::qWaitForWindowShown(&view); |
|
3747 QTRY_VERIFY(view.painted > 0); |
|
3748 |
|
3749 QTest::qWait(100); // This one is needed to make the test fail before the patch. |
|
3750 view.painted = 0; |
|
3751 view.doCompare = true; |
|
3752 model.setData(model.index(0, 0), QVariant(QSize(50, 50)), Qt::SizeHintRole); |
|
3753 QTest::qWait(100); |
|
3754 QTRY_VERIFY(view.painted > 0); |
|
3755 } |
|
3756 |
|
3757 void tst_QTreeView::keyboardNavigationWithDisabled() |
|
3758 { |
|
3759 QTreeView view; |
|
3760 QStandardItemModel model(90, 0); |
|
3761 for (int i = 0; i < 90; i ++) { |
|
3762 model.setItem(i, new QStandardItem(QString::number(i))); |
|
3763 model.item(i)->setEnabled(i%6 == 0); |
|
3764 } |
|
3765 view.setModel(&model); |
|
3766 |
|
3767 view.resize(200, view.visualRect(model.index(0,0)).height()*10); |
|
3768 view.show(); |
|
3769 QApplication::setActiveWindow(&view); |
|
3770 QTest::qWaitForWindowShown(&view); |
|
3771 QTRY_VERIFY(view.isActiveWindow()); |
|
3772 |
|
3773 view.setCurrentIndex(model.index(1, 0)); |
|
3774 QTest::keyClick(view.viewport(), Qt::Key_Up); |
|
3775 QCOMPARE(view.currentIndex(), model.index(0, 0)); |
|
3776 QTest::keyClick(view.viewport(), Qt::Key_Down); |
|
3777 QCOMPARE(view.currentIndex(), model.index(6, 0)); |
|
3778 QTest::keyClick(view.viewport(), Qt::Key_PageDown); |
|
3779 QCOMPARE(view.currentIndex(), model.index(18, 0)); |
|
3780 QTest::keyClick(view.viewport(), Qt::Key_Down); |
|
3781 QCOMPARE(view.currentIndex(), model.index(24, 0)); |
|
3782 QTest::keyClick(view.viewport(), Qt::Key_PageUp); |
|
3783 QCOMPARE(view.currentIndex(), model.index(12, 0)); |
|
3784 QTest::keyClick(view.viewport(), Qt::Key_Up); |
|
3785 QCOMPARE(view.currentIndex(), model.index(6, 0)); |
|
3786 } |
|
3787 |
3717 QTEST_MAIN(tst_QTreeView) |
3788 QTEST_MAIN(tst_QTreeView) |
3718 #include "tst_qtreeview.moc" |
3789 #include "tst_qtreeview.moc" |