Skip to content

Commit 138be4a

Browse files
SebDieBlnSandro Santilli
authored and
Sandro Santilli
committedFeb 22, 2016
Don't zoom when panning with the keyboard on a rotated QgsMapCanvas
Fixes #14243 Signed-off-by: Sandro Santilli <strk@keybit.net>
1 parent 81a1f63 commit 138be4a

File tree

1 file changed

+6
-18
lines changed

1 file changed

+6
-18
lines changed
 

‎src/gui/qgsmapcanvas.cpp

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,44 +1154,32 @@ void QgsMapCanvas::keyPressEvent( QKeyEvent * e )
11541154
// Don't want to interfer with mouse events
11551155

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

11601160
switch ( e->key() )
11611161
{
11621162
case Qt::Key_Left:
11631163
QgsDebugMsg( "Pan left" );
1164-
1165-
currentExtent.setXMinimum( currentExtent.xMinimum() - dx );
1166-
currentExtent.setXMaximum( currentExtent.xMaximum() - dx );
1167-
setExtent( currentExtent );
1164+
setCenter( center() - QgsVector( dx, 0 ).rotateBy( rotation() * M_PI / 180.0 ) );
11681165
refresh();
11691166
break;
11701167

11711168
case Qt::Key_Right:
11721169
QgsDebugMsg( "Pan right" );
1173-
1174-
currentExtent.setXMinimum( currentExtent.xMinimum() + dx );
1175-
currentExtent.setXMaximum( currentExtent.xMaximum() + dx );
1176-
setExtent( currentExtent );
1170+
setCenter( center() + QgsVector( dx, 0 ).rotateBy( rotation() * M_PI / 180.0 ) );
11771171
refresh();
11781172
break;
11791173

11801174
case Qt::Key_Up:
11811175
QgsDebugMsg( "Pan up" );
1182-
1183-
currentExtent.setYMaximum( currentExtent.yMaximum() + dy );
1184-
currentExtent.setYMinimum( currentExtent.yMinimum() + dy );
1185-
setExtent( currentExtent );
1176+
setCenter( center() + QgsVector( 0, dy ).rotateBy( rotation() * M_PI / 180.0 ) );
11861177
refresh();
11871178
break;
11881179

11891180
case Qt::Key_Down:
11901181
QgsDebugMsg( "Pan down" );
1191-
1192-
currentExtent.setYMaximum( currentExtent.yMaximum() - dy );
1193-
currentExtent.setYMinimum( currentExtent.yMinimum() - dy );
1194-
setExtent( currentExtent );
1182+
setCenter( center() - QgsVector( 0, dy ).rotateBy( rotation() * M_PI / 180.0 ) );
11951183
refresh();
11961184
break;
11971185

0 commit comments

Comments
 (0)
Please sign in to comment.