summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-08-30 19:47:05 +0200
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-09-09 12:03:55 +0000
commitef40cad3a974242cc8f9167288a8804239586669 (patch)
treed02fda4e02e5679af65c0568ec217b3dfb81b713 /src
parentcd499b72973a4a01d12e2e3ba66e7e16ac1feeb4 (diff)
QTableView: Fix PageUp not getting to top when first row is hidden
When the first row(s) of a QTableView is hidden, PageUp could not reach the first visible row because logicalRow(0) is taken without checking if the row is visible. Task-number: QTBUG-70215 Change-Id: Ic7820352b8988accb685ea7d16908d3fa8bf2847 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Luca Beldi <v.ronin@yahoo.it> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/widgets/itemviews/qtableview.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp
index 9c2b3e5b54..9725a768de 100644
--- a/src/widgets/itemviews/qtableview.cpp
+++ b/src/widgets/itemviews/qtableview.cpp
@@ -1816,8 +1816,12 @@ QModelIndex QTableView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifi
break;
case MovePageUp: {
int newRow = rowAt(visualRect(current).bottom() - d->viewport->height());
- if (newRow == -1)
- newRow = d->logicalRow(0);
+ if (newRow == -1) {
+ int visualRow = 0;
+ while (visualRow < bottom && isRowHidden(d->logicalRow(visualRow)))
+ ++visualRow;
+ newRow = d->logicalRow(visualRow);
+ }
return d->model->index(newRow, current.column(), d->root);
}
case MovePageDown: {