tests/auto/qtreeview/tst_qtreeview.cpp
changeset 30 5dc02b23752f
parent 19 fcece45ef507
child 37 758a864f9613
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
   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"