webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp
branchRCL_3
changeset 84 800203832575
parent 71 4bd5176e1bc8
child 91 30342f40acbf
equal deleted inserted replaced
73:a1a5d4e727e8 84:800203832575
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
       
    20 #include <browser_platform_variant.hrh>
    20 #include <../bidi.h>
    21 #include <../bidi.h>
    21 #include "WebScrollingDeceleratorGH.h"
    22 #include "WebScrollingDeceleratorGH.h"
    22 #include "WebView.h"
    23 #include "WebView.h"
    23 #include "WebFrame.h"
    24 #include "WebFrame.h"
    24 #include "WebFrameView.h"
    25 #include "WebFrameView.h"
    33 
    34 
    34 // The following deceleration curve is generated by a script
    35 // The following deceleration curve is generated by a script
    35 // It lists the timeout dt values in microseconds.
    36 // It lists the timeout dt values in microseconds.
    36 const int KDecelCurveSize = 10;
    37 const int KDecelCurveSize = 10;
    37 
    38 
       
    39 #ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF
       
    40 const int KScrollIntervalTimeout = 30000; // scroll timer interval in microseconds
       
    41 #else
    38 const int KScrollIntervalTimeout = 60000; // scroll timer interval in microseconds
    42 const int KScrollIntervalTimeout = 60000; // scroll timer interval in microseconds
       
    43 #endif
    39 
    44 
    40 const float KDecceleration = -750.0;
    45 const float KDecceleration = -750.0;
    41 const float KSpeedHigh = 2000.0;
    46 const float KSpeedHigh = 2000.0;
    42 
    47 
    43 int decelTimerCB(TAny* ptr);
    48 int decelTimerCB(TAny* ptr);
   105 
   110 
   106 void WebScrollingDeceleratorGH::cancelDecel() 
   111 void WebScrollingDeceleratorGH::cancelDecel() 
   107 { 
   112 { 
   108     m_decelelatorSwitch = false;
   113     m_decelelatorSwitch = false;
   109     if (m_decelTimer->IsActive()) {
   114     if (m_decelTimer->IsActive()) {
   110         m_webView.setScrolling(false);
   115         m_webView.setViewIsScrolling(false);
   111 		m_webView.resumeJsTimers();		
   116 		m_webView.resumeJsTimers();		
   112         m_decelTimer->Cancel();
   117         m_decelTimer->Cancel();
   113     }
   118     }
   114 }
   119 }
   115 
   120 
   116 void WebScrollingDeceleratorGH::startDecel(TRealPoint& speed, WebScrollbarDrawer* scrollbarDrawer)
   121 bool WebScrollingDeceleratorGH::startDecel(TRealPoint& speed, WebScrollbarDrawer* scrollbarDrawer)
   117 {
   122 {
       
   123     bool started = false;
   118     m_decelelatorSwitch = true;
   124     m_decelelatorSwitch = true;
   119     m_scrollbarDrawer = scrollbarDrawer;
   125     m_scrollbarDrawer = scrollbarDrawer;
   120     float speedX = speed.iX;
   126     float speedX = speed.iX;
   121     float speedY = speed.iY;
   127     float speedY = speed.iY;
   122     float absSpeedX = abs(speedX);
   128     float absSpeedX = abs(speedX);
   132     m_initSpeed.iX = (-1) * speedX;
   138     m_initSpeed.iX = (-1) * speedX;
   133     m_initSpeed.iY = (-1) * speedY;
   139     m_initSpeed.iY = (-1) * speedY;
   134     
   140     
   135     m_numscrollsteps = 0;
   141     m_numscrollsteps = 0;
   136     if (m_decelTimer->IsActive()) {
   142     if (m_decelTimer->IsActive()) {
   137         m_webView.setScrolling(false);
   143         m_webView.setViewIsScrolling(false);
   138     	m_webView.resumeJsTimers();
   144     	m_webView.resumeJsTimers();
   139         m_decelTimer->Cancel();
   145         m_decelTimer->Cancel();
   140     }
   146     }
   141     
   147     
   142     WebFrameView* scrollingView = m_webView.pageScrollHandler()->currentScrollingFrameView();
   148     WebFrameView* scrollingView = m_webView.pageScrollHandler()->currentScrollingFrameView();
   143     if (scrollingView) {
   149     if (scrollingView) {
   144         m_webView.pauseJsTimers(); // pause the JS timers
   150         m_webView.pauseJsTimers(); // pause the JS timers
   145         m_webView.setScrolling(true);
   151         m_webView.setViewIsScrolling(true);
   146         m_startPos = scrollingView->contentPos();
   152         m_startPos = scrollingView->contentPos();
   147         m_lastPos = m_startPos;
   153         m_lastPos = m_startPos;
   148         m_decelTimer->Start(0, KScrollIntervalTimeout, 
   154         m_decelTimer->Start(0, KScrollIntervalTimeout, 
   149                             TCallBack(&decelTimerCB, this));
   155                             TCallBack(&decelTimerCB, this));
   150     }
   156         started = true;
       
   157     }
       
   158     return started;
   151 }
   159 }
   152 
   160 
   153 void WebScrollingDeceleratorGH::scroll()
   161 void WebScrollingDeceleratorGH::scroll()
   154 {
   162 {
   155     if (!m_decelelatorSwitch) return;
   163     if (!m_decelelatorSwitch) return;
   193         if (m_scrollbarDrawer) {
   201         if (m_scrollbarDrawer) {
   194             m_scrollbarDrawer->fadeScrollbar();
   202             m_scrollbarDrawer->fadeScrollbar();
   195         }
   203         }
   196 		
   204 		
   197         m_webView.resumeJsTimers(); // resume the js timers
   205         m_webView.resumeJsTimers(); // resume the js timers
   198         m_webView.setScrolling(false);
   206         m_webView.setViewIsScrolling(false);
   199         m_decelTimer->Cancel();
   207         m_decelTimer->Cancel();
   200         handler->clearScrollingElement();
   208         handler->clearScrollingElement();
   201         m_webView.setViewIsScrolling(false);
   209         m_webView.setViewIsScrolling(false);
   202         m_webView.toggleRepaintTimer(true);
   210         m_webView.toggleRepaintTimer(true);
   203     }
   211     }