diff options
Diffstat (limited to 'tests/auto/widgets')
3 files changed, 120 insertions, 0 deletions
diff --git a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp index 13b953c48b..6540c544cc 100644 --- a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp +++ b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp @@ -161,6 +161,7 @@ private slots: void taskQTBUG_39902_mutualScrollBars_data(); void taskQTBUG_39902_mutualScrollBars(); void horizontalScrollingByVerticalWheelEvents(); + void taskQTBUG_7232_AllowUserToControlSingleStep(); }; // Testing get/set functions @@ -2469,5 +2470,43 @@ void tst_QListView::horizontalScrollingByVerticalWheelEvents() QVERIFY(lv.verticalScrollBar()->value() > vValue); } +void tst_QListView::taskQTBUG_7232_AllowUserToControlSingleStep() +{ + // When we set the scrollMode to ScrollPerPixel it will adjust the scrollbars singleStep automatically + // Setting a singlestep on a scrollbar should however imply that the user takes control. + // Setting a singlestep to -1 return to an automatic control of the singleStep. + QListView lv; + lv.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + lv.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + + QStandardItemModel model(1000, 100); + QString str = QString::fromLatin1("This is a long string made to ensure that we get some horizontal scroll (and we want scroll)"); + model.setData(model.index(0, 0), str); + lv.setModel(&model); + lv.setGeometry(150, 150, 150, 150); + lv.show(); + lv.setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); + lv.setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); + QVERIFY(QTest::qWaitForWindowExposed(&lv)); + + int vStep1 = lv.verticalScrollBar()->singleStep(); + int hStep1 = lv.horizontalScrollBar()->singleStep(); + QVERIFY(lv.verticalScrollBar()->singleStep() > 1); + QVERIFY(lv.horizontalScrollBar()->singleStep() > 1); + + lv.verticalScrollBar()->setSingleStep(1); + lv.setGeometry(200, 200, 200, 200); + QCOMPARE(lv.verticalScrollBar()->singleStep(), 1); + + lv.horizontalScrollBar()->setSingleStep(1); + lv.setGeometry(150, 150, 150, 150); + QCOMPARE(lv.horizontalScrollBar()->singleStep(), 1); + + lv.verticalScrollBar()->setSingleStep(-1); + lv.horizontalScrollBar()->setSingleStep(-1); + QCOMPARE(vStep1, lv.verticalScrollBar()->singleStep()); + QCOMPARE(hStep1, lv.horizontalScrollBar()->singleStep()); +} + QTEST_MAIN(tst_QListView) #include "tst_qlistview.moc" diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp index 45dab3f2c1..432c03a2df 100644 --- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp +++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp @@ -214,6 +214,8 @@ private slots: void changeHeaderData(); void viewOptions(); + + void taskQTBUG_7232_AllowUserToControlSingleStep(); }; // Testing get/set functions @@ -4483,5 +4485,41 @@ void tst_QTableView::taskQTBUG_30653_doItemsLayout() QCOMPARE(scrollToBottomOffset, doItemsLayoutOffset); } +void tst_QTableView::taskQTBUG_7232_AllowUserToControlSingleStep() +{ + // When we set the scrollMode to ScrollPerPixel it will adjust the scrollbars singleStep automatically + // Setting a singlestep on a scrollbar should however imply that the user takes control (and it is not changed by geometry updates). + // Setting a singlestep to -1 return to an automatic control of the singleStep. + QTableView t; + t.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + t.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + QStandardItemModel model(200, 200); + t.setModel(&model); + t.show(); + QVERIFY(QTest::qWaitForWindowExposed(&t)); + t.setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); + t.setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); + + t.setGeometry(200, 200, 200, 200); + int vStep1 = t.verticalScrollBar()->singleStep(); + int hStep1 = t.horizontalScrollBar()->singleStep(); + QVERIFY(vStep1 > 1); + QVERIFY(hStep1 > 1); + + t.verticalScrollBar()->setSingleStep(1); + t.setGeometry(300, 300, 300, 300); + QCOMPARE(t.verticalScrollBar()->singleStep(), 1); + + t.horizontalScrollBar()->setSingleStep(1); + t.setGeometry(400, 400, 400, 400); + QCOMPARE(t.horizontalScrollBar()->singleStep(), 1); + + t.setGeometry(200, 200, 200, 200); + t.verticalScrollBar()->setSingleStep(-1); + t.horizontalScrollBar()->setSingleStep(-1); + QCOMPARE(vStep1, t.verticalScrollBar()->singleStep()); + QCOMPARE(hStep1, t.horizontalScrollBar()->singleStep()); +} + QTEST_MAIN(tst_QTableView) #include "tst_qtableview.moc" diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp index dec6a66a7f..07413f5040 100644 --- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp @@ -255,6 +255,7 @@ private slots: void taskQTBUG_8176_emitOnExpandAll(); void taskQTBUG_37813_crash(); void taskQTBUG_45697_crash(); + void taskQTBUG_7232_AllowUserToControlSingleStep(); void testInitialFocus(); }; @@ -4447,5 +4448,47 @@ void tst_QTreeView::taskQTBUG_45697_crash() QTRY_VERIFY(testWidget.timerTick() >= 2); } +void tst_QTreeView::taskQTBUG_7232_AllowUserToControlSingleStep() +{ + // When we set the scrollMode to ScrollPerPixel it will adjust the scrollbars singleStep automatically + // Setting a singlestep on a scrollbar should however imply that the user takes control. + // Setting a singlestep to -1 return to an automatic control of the singleStep. + QTreeWidget t; + t.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + t.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + t.setColumnCount(2); + QTreeWidgetItem *mainItem = new QTreeWidgetItem(&t, 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"); + } + t.expandAll(); + + t.setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); + t.setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); + + t.setGeometry(200, 200, 200, 200); + int vStep1 = t.verticalScrollBar()->singleStep(); + int hStep1 = t.horizontalScrollBar()->singleStep(); + QVERIFY(vStep1 > 1); + QVERIFY(hStep1 > 1); + + t.verticalScrollBar()->setSingleStep(1); + t.setGeometry(300, 300, 300, 300); + QCOMPARE(t.verticalScrollBar()->singleStep(), 1); + + t.horizontalScrollBar()->setSingleStep(1); + t.setGeometry(400, 400, 400, 400); + QCOMPARE(t.horizontalScrollBar()->singleStep(), 1); + + t.setGeometry(200, 200, 200, 200); + t.verticalScrollBar()->setSingleStep(-1); + t.horizontalScrollBar()->setSingleStep(-1); + QCOMPARE(vStep1, t.verticalScrollBar()->singleStep()); + QCOMPARE(hStep1, t.horizontalScrollBar()->singleStep()); +} + QTEST_MAIN(tst_QTreeView) #include "tst_qtreeview.moc" |