From ff3cf049ce14d29caa4455b2fc30bb18da0197ee Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Fri, 20 Jul 2007 12:18:55 +0000 Subject: [PATCH] Shift + Space is one screen back, says the HIG. BUG: 148054 svn path=/trunk/KDE/kdegraphics/okular/; revision=690227 --- ui/pageview.cpp | 83 +++++++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 38 deletions(-) diff --git a/ui/pageview.cpp b/ui/pageview.cpp index 4a532bfc4..9753de0c5 100644 --- a/ui/pageview.cpp +++ b/ui/pageview.cpp @@ -1033,50 +1033,57 @@ void PageView::keyPressEvent( QKeyEvent * e ) // move/scroll page by using keys switch ( e->key() ) { - case Qt::Key_Up: - case Qt::Key_PageUp: - case Qt::Key_Backspace: - // if in single page mode and at the top of the screen, go to \ page - if ( Okular::Settings::viewContinuous() || verticalScrollBar()->value() > verticalScrollBar()->minimum() ) - { - if ( e->key() == Qt::Key_Up ) - verticalScrollBar()->triggerAction( QScrollBar::SliderSingleStepSub ); - else - verticalScrollBar()->triggerAction( QScrollBar::SliderPageStepSub ); - } - else if ( d->document->currentPage() > 0 ) - { - // more optimized than document->setPrevPage and then move view to bottom - Okular::DocumentViewport newViewport = d->document->viewport(); - newViewport.pageNumber -= viewColumns(); - if ( newViewport.pageNumber < 0 ) - newViewport.pageNumber = 0; - newViewport.rePos.enabled = true; - newViewport.rePos.normalizedY = 1.0; - d->document->setViewport( newViewport ); - } - break; case Qt::Key_Down: case Qt::Key_PageDown: case Qt::Key_Space: - // if in single page mode and at the bottom of the screen, go to next page - if ( Okular::Settings::viewContinuous() || verticalScrollBar()->value() < verticalScrollBar()->maximum() ) + case Qt::Key_Up: + case Qt::Key_PageUp: + case Qt::Key_Backspace: + if ( e->key() == Qt::Key_Down + || e->key() == Qt::Key_PageDown + || ( e->key() == Qt::Key_Space && ( e->modifiers() & Qt::ShiftModifier ) != Qt::ShiftModifier ) ) { - if ( e->key() == Qt::Key_Down ) - verticalScrollBar()->triggerAction( QScrollBar::SliderSingleStepAdd ); - else - verticalScrollBar()->triggerAction( QScrollBar::SliderPageStepAdd ); + // if in single page mode and at the bottom of the screen, go to next page + if ( Okular::Settings::viewContinuous() || verticalScrollBar()->value() < verticalScrollBar()->maximum() ) + { + if ( e->key() == Qt::Key_Down ) + verticalScrollBar()->triggerAction( QScrollBar::SliderSingleStepAdd ); + else + verticalScrollBar()->triggerAction( QScrollBar::SliderPageStepAdd ); + } + else if ( (int)d->document->currentPage() < d->items.count() - 1 ) + { + // more optimized than document->setNextPage and then move view to top + Okular::DocumentViewport newViewport = d->document->viewport(); + newViewport.pageNumber += d->document->currentPage() ? viewColumns() : 1; + if ( newViewport.pageNumber >= (int)d->items.count() ) + newViewport.pageNumber = d->items.count() - 1; + newViewport.rePos.enabled = true; + newViewport.rePos.normalizedY = 0.0; + d->document->setViewport( newViewport ); + } } - else if ( (int)d->document->currentPage() < d->items.count() - 1 ) + else { - // more optimized than document->setNextPage and then move view to top - Okular::DocumentViewport newViewport = d->document->viewport(); - newViewport.pageNumber += d->document->currentPage() ? viewColumns() : 1; - if ( newViewport.pageNumber >= (int)d->items.count() ) - newViewport.pageNumber = d->items.count() - 1; - newViewport.rePos.enabled = true; - newViewport.rePos.normalizedY = 0.0; - d->document->setViewport( newViewport ); + // if in single page mode and at the top of the screen, go to \ page + if ( Okular::Settings::viewContinuous() || verticalScrollBar()->value() > verticalScrollBar()->minimum() ) + { + if ( e->key() == Qt::Key_Up ) + verticalScrollBar()->triggerAction( QScrollBar::SliderSingleStepSub ); + else + verticalScrollBar()->triggerAction( QScrollBar::SliderPageStepSub ); + } + else if ( d->document->currentPage() > 0 ) + { + // more optimized than document->setPrevPage and then move view to bottom + Okular::DocumentViewport newViewport = d->document->viewport(); + newViewport.pageNumber -= viewColumns(); + if ( newViewport.pageNumber < 0 ) + newViewport.pageNumber = 0; + newViewport.rePos.enabled = true; + newViewport.rePos.normalizedY = 1.0; + d->document->setViewport( newViewport ); + } } break; case Qt::Key_Left: