[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