summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-12-08 19:58:00 +0100
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-12-18 05:33:52 +0000
commit7863be311570fa219066df5fe8720d5b92ddb680 (patch)
tree3cbcaca76768c6525d618a6e85848678a2dd74b7 /tests
parent53ae00d03c4065ca2235dc41636be0274d074c57 (diff)
QTableView: Fix keyboard navigation with disabled rows
The keyboard navigation with MovePageUp/Down and MoveEnd did not honor disabled cells in all cases which lead to inconsistencies in the navigation (esp. since MoveHome does honor them correctly). Therefore make sure that all four move operations work consistent by refactoring the code to use common functions. Fixes: QTBUG-72400 Change-Id: I63fa3b626510d21c66f4f9b2b1bfb3261728ecaf Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Luca Beldi <v.ronin@yahoo.it> Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp40
1 files changed, 34 insertions, 6 deletions
diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
index ab746dfee8..1b95b5a3ca 100644
--- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
+++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
@@ -1264,19 +1264,47 @@ void tst_QTableView::moveCursorStrikesBack_data()
for (int i = 0; i < 7; ++i)
fullList << i;
- QTest::newRow("All disabled, wrap forward. Timeout => FAIL") << -1 << -1
+ QTest::newRow("All disabled, wrap forward. => invalid index") << -1 << -1
<< fullList
<< fullList
<< QRect()
<< 1 << 0 << (IntList() << int(QtTestTableView::MoveNext))
- << 1 << 0;
+ << -1 << -1;
- QTest::newRow("All disabled, wrap backwards. Timeout => FAIL") << -1 << -1
+ QTest::newRow("All disabled, wrap backwards. => invalid index") << -1 << -1
<< fullList
<< fullList
<< QRect()
<< 1 << 0 << (IntList() << int(QtTestTableView::MovePrevious))
+ << -1 << -1;
+
+ QTest::newRow("Last column disabled, MoveEnd. QTBUG-72400") << -1 << -1
+ << IntList()
+ << (IntList() << 6)
+ << QRect()
+ << 0 << 0 << (IntList() << int(QtTestTableView::MoveEnd))
+ << 0 << 5;
+
+ QTest::newRow("First column disabled, MoveHome. QTBUG-72400") << -1 << -1
+ << IntList()
+ << (IntList() << 0)
+ << QRect()
+ << 0 << 6 << (IntList() << int(QtTestTableView::MoveHome))
+ << 0 << 1;
+
+ QTest::newRow("First row disabled, MovePageUp. QTBUG-72400") << -1 << -1
+ << (IntList() << 0)
+ << IntList()
+ << QRect()
+ << 2 << 0 << (IntList() << int(QtTestTableView::MovePageUp))
<< 1 << 0;
+
+ QTest::newRow("Last row disabled, MovePageDown. QTBUG-72400") << -1 << -1
+ << (IntList() << 6)
+ << IntList()
+ << QRect()
+ << 4 << 0 << (IntList() << int(QtTestTableView::MovePageDown))
+ << 5 << 0;
}
void tst_QTableView::moveCursorStrikesBack()
@@ -1302,6 +1330,9 @@ void tst_QTableView::moveCursorStrikesBack()
if (span.height() && span.width())
view.setSpan(span.top(), span.left(), span.height(), span.width());
view.show();
+ QVERIFY(QTest::qWaitForWindowActive(&view));
+ // resize to make sure there are scrollbars
+ view.resize(view.columnWidth(0) * 7, view.rowHeight(0) * 7);
QModelIndex index = model.index(startRow, startColumn);
view.setCurrentIndex(index);
@@ -1320,9 +1351,6 @@ void tst_QTableView::moveCursorStrikesBack()
newColumn = newIndex.column();
}
- // expected fails, task 119433
- if(newRow == -1)
- return;
QCOMPARE(newRow, expectedRow);
QCOMPARE(newColumn, expectedColumn);
}