Skip to content

Commit

Permalink
Don't zoom when panning with the keyboard on a rotated QgsMapCanvas
Browse files Browse the repository at this point in the history
Fixes #14243

Signed-off-by: Sandro Santilli <strk@keybit.net>
  • Loading branch information
SebDieBln authored and Sandro Santilli committed Feb 22, 2016
1 parent 81a1f63 commit 138be4a
Showing 1 changed file with 6 additions and 18 deletions.
24 changes: 6 additions & 18 deletions src/gui/qgsmapcanvas.cpp
Expand Up @@ -1154,44 +1154,32 @@ void QgsMapCanvas::keyPressEvent( QKeyEvent * e )
// Don't want to interfer with mouse events

QgsRectangle currentExtent = mapSettings().visibleExtent();
double dx = qAbs(( currentExtent.xMaximum() - currentExtent.xMinimum() ) / 4 );
double dy = qAbs(( currentExtent.yMaximum() - currentExtent.yMinimum() ) / 4 );
double dx = qAbs( currentExtent.width() / 4 );
double dy = qAbs( currentExtent.height() / 4 );

switch ( e->key() )
{
case Qt::Key_Left:
QgsDebugMsg( "Pan left" );

currentExtent.setXMinimum( currentExtent.xMinimum() - dx );
currentExtent.setXMaximum( currentExtent.xMaximum() - dx );
setExtent( currentExtent );
setCenter( center() - QgsVector( dx, 0 ).rotateBy( rotation() * M_PI / 180.0 ) );
refresh();
break;

case Qt::Key_Right:
QgsDebugMsg( "Pan right" );

currentExtent.setXMinimum( currentExtent.xMinimum() + dx );
currentExtent.setXMaximum( currentExtent.xMaximum() + dx );
setExtent( currentExtent );
setCenter( center() + QgsVector( dx, 0 ).rotateBy( rotation() * M_PI / 180.0 ) );
refresh();
break;

case Qt::Key_Up:
QgsDebugMsg( "Pan up" );

currentExtent.setYMaximum( currentExtent.yMaximum() + dy );
currentExtent.setYMinimum( currentExtent.yMinimum() + dy );
setExtent( currentExtent );
setCenter( center() + QgsVector( 0, dy ).rotateBy( rotation() * M_PI / 180.0 ) );
refresh();
break;

case Qt::Key_Down:
QgsDebugMsg( "Pan down" );

currentExtent.setYMaximum( currentExtent.yMaximum() - dy );
currentExtent.setYMinimum( currentExtent.yMinimum() - dy );
setExtent( currentExtent );
setCenter( center() - QgsVector( 0, dy ).rotateBy( rotation() * M_PI / 180.0 ) );
refresh();
break;

Expand Down

0 comments on commit 138be4a

Please sign in to comment.