diff options
Diffstat (limited to 'src/widgets/itemviews/qlistview.cpp')
-rw-r--r-- | src/widgets/itemviews/qlistview.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index ce771911b3..7f8f7a20fe 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -1201,7 +1201,10 @@ QModelIndex QListView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifie } return d->closestIndex(initialRect, intersectVector); case MovePageUp: { - rect.moveTop(rect.top() - d->viewport->height() + 1 ); + if (rect.height() >= d->viewport->height()) + return moveCursor(QAbstractItemView::MoveUp, modifiers); + + rect.moveTop(rect.top() - d->viewport->height() + 1); if (rect.top() < rect.height()) { rect.setTop(0); rect.setBottom(1); @@ -1242,8 +1245,11 @@ QModelIndex QListView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifie } return d->closestIndex(initialRect, intersectVector); case MovePageDown: { - rect.moveTop(rect.top() + d->viewport->height() - 1 ); - if (rect.bottom() > contents.height() - rect.height()){ + if (rect.height() >= d->viewport->height()) + return moveCursor(QAbstractItemView::MoveDown, modifiers); + + rect.moveTop(rect.top() + d->viewport->height() - 1); + if (rect.bottom() > contents.height() - rect.height()) { rect.setTop(contents.height() - 1); rect.setBottom(contents.height()); } |