@@ -1259,6 +1259,11 @@ void QgsComposerView::wheelZoom( QWheelEvent * event )
1259
1259
int wheelAction = mySettings.value ( " /qgis/wheel_action" , 2 ).toInt ();
1260
1260
double zoomFactor = mySettings.value ( " /qgis/zoom_factor" , 2 ).toDouble ();
1261
1261
1262
+ if (( QgsMapCanvas::WheelAction )wheelAction == QgsMapCanvas::WheelNothing )
1263
+ {
1264
+ return ;
1265
+ }
1266
+
1262
1267
if ( event->modifiers () & Qt::ControlModifier )
1263
1268
{
1264
1269
// holding ctrl while wheel zooming results in a finer zoom
@@ -1276,25 +1281,12 @@ void QgsComposerView::wheelZoom( QWheelEvent * event )
1276
1281
// transform the mouse pos to scene coordinates
1277
1282
QPointF scenePoint = mapToScene ( event->pos () );
1278
1283
1279
- // zoom composition, respecting wheel action setting
1284
+ // adjust view center according to wheel action setting
1280
1285
switch (( QgsMapCanvas::WheelAction )wheelAction )
1281
1286
{
1282
- case QgsMapCanvas::WheelZoom:
1283
- // zoom without changing extent
1284
- if ( zoomIn )
1285
- {
1286
- scale ( zoomFactor, zoomFactor );
1287
- }
1288
- else
1289
- {
1290
- scale ( 1 / zoomFactor, 1 / zoomFactor );
1291
- }
1292
- break ;
1293
-
1294
1287
case QgsMapCanvas::WheelZoomAndRecenter:
1295
1288
{
1296
- visibleRect.scale ( scaleFactor, scenePoint.x (), scenePoint.y () );
1297
- fitInView ( visibleRect.toRectF (), Qt::KeepAspectRatio );
1289
+ centerOn ( scenePoint.x (), scenePoint.y () );
1298
1290
break ;
1299
1291
}
1300
1292
@@ -1303,14 +1295,22 @@ void QgsComposerView::wheelZoom( QWheelEvent * event )
1303
1295
QgsPoint oldCenter ( visibleRect.center () );
1304
1296
QgsPoint newCenter ( scenePoint.x () + (( oldCenter.x () - scenePoint.x () ) * scaleFactor ),
1305
1297
scenePoint.y () + (( oldCenter.y () - scenePoint.y () ) * scaleFactor ) );
1306
-
1307
- visibleRect.scale ( scaleFactor, newCenter.x (), newCenter.y () );
1308
- fitInView ( visibleRect.toRectF (), Qt::KeepAspectRatio );
1298
+ centerOn ( newCenter.x (), newCenter.y () );
1309
1299
break ;
1310
1300
}
1311
1301
1312
- case QgsMapCanvas::WheelNothing:
1313
- return ;
1302
+ default :
1303
+ break ;
1304
+ }
1305
+
1306
+ // zoom composition
1307
+ if ( zoomIn )
1308
+ {
1309
+ scale ( zoomFactor, zoomFactor );
1310
+ }
1311
+ else
1312
+ {
1313
+ scale ( 1 / zoomFactor, 1 / zoomFactor );
1314
1314
}
1315
1315
1316
1316
// update composition for new zoom
0 commit comments