[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeedu/marble/src/lib
From:       Dennis Nienhüser <earthwings () gentoo ! org>
Date:       2010-04-30 21:25:58
Message-ID: 20100430212558.9754DAC8AA () svn ! kde ! org
[Download RAW message or body]

SVN commit 1121227 by nienhueser:

Be aware of animations in wheel zoom mode and prevent interpolated positions to slow \
down zooming.

 M  +12 -2     MarbleWidgetInputHandler.cpp  


--- trunk/KDE/kdeedu/marble/src/lib/MarbleWidgetInputHandler.cpp #1121226:1121227
@@ -58,6 +58,7 @@
     bool m_positionSignalConnected;
     QTimer *m_mouseWheelTimer;
     Qt::MouseButtons m_disabledMouseButtons;
+    qreal m_wheelZoomTargetDistance;
 };
 
 MarbleWidgetInputHandler::Protected::Protected()
@@ -65,7 +66,8 @@
       m_model( 0 ),
       m_positionSignalConnected( false ),
       m_mouseWheelTimer( 0 ),
-      m_disabledMouseButtons( Qt::NoButton )
+      m_disabledMouseButtons( Qt::NoButton ),
+      m_wheelZoomTargetDistance( 0.0 )
 {
 }
 
@@ -323,6 +325,7 @@
     }
 
     d->m_widget->map()->viewParams()->viewport()->resetFocusPoint();
+    d->m_wheelZoomTargetDistance = 0.0;
 }
 
 void MarbleWidgetInputHandler::installPluginEventFilter( RenderPlugin *renderPlugin \
) @@ -726,7 +729,14 @@
             marbleWidget->setViewContext( Animation );
 
             int steps = wheelevt->delta() / 3;
-            qreal newDistance = \
marbleWidget->map()->distanceFromZoom(marbleWidget->map()->zoom() + steps); +         \
qreal zoom = marbleWidget->map()->zoom(); +            qreal target = \
MarbleWidgetInputHandler::d->m_wheelZoomTargetDistance; +            if ( \
marbleWidget->animationsEnabled() && target > 0.0 ) { +                // Do not use \
intermediate (interpolated) distance values caused by animations +                \
zoom = marbleWidget->map()->zoomFromDistance( target ); +            }
+            qreal newDistance = marbleWidget->map()->distanceFromZoom( zoom + steps \
); +            MarbleWidgetInputHandler::d->m_wheelZoomTargetDistance = newDistance;
             d->ZoomAt(MarbleWidgetInputHandler::d->m_widget, wheelevt->pos(), \
newDistance);  
             MarbleWidgetInputHandler::d->m_mouseWheelTimer->start( 400 );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic