webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.cpp
changeset 28 d39add9822e2
parent 25 0ed94ceaa377
child 36 c711bdda59f4
equal deleted inserted replaced
27:6297cdf66332 28:d39add9822e2
    35 #include "RenderObject.h"
    35 #include "RenderObject.h"
    36 #include "WebScrollingDeceleratorGH.h"
    36 #include "WebScrollingDeceleratorGH.h"
    37 
    37 
    38 #include "WebKitLogger.h"
    38 #include "WebKitLogger.h"
    39 using namespace WebCore;
    39 using namespace WebCore;
    40 using namespace RT_GestureHelper;
       
    41 // constants
    40 // constants
    42 const int KPageOverviewScrollPeriodic = 20 * 1000; // Update frequently for faster, smoother scrolling
    41 const int KPageOverviewScrollPeriodic = 20 * 1000; // Update frequently for faster, smoother scrolling
    43 const int KMicroInterval = 300000;
    42 const int KMicroInterval = 300000;
    44 const int KPageOverviewScrollStart = 1000;
    43 const int KPageOverviewScrollStart = 1000;
    45 const int KCancelDecelerationTimeout = 200000; //Decelerate only if flicked KCancelDecelerationTimeout microsec after last drag event.
    44 const int KCancelDecelerationTimeout = 200000; //Decelerate only if flicked KCancelDecelerationTimeout microsec after last drag event.
   603     m_webView->mainFrame()->frameView()->scrollTo(TPoint(xInDoc, yInDoc));    
   602     m_webView->mainFrame()->frameView()->scrollTo(TPoint(xInDoc, yInDoc));    
   604 
   603 
   605 }
   604 }
   606 
   605 
   607 
   606 
   608 void WebPageScrollHandler::handleScrollingGH(const TGestureEvent& aEvent)
   607 void WebPageScrollHandler::handleScrollingGH(const TStmGestureEvent& aGesture)
   609 {   
   608 {   
   610     TPoint newPos = aEvent.CurrentPos();
   609     TPoint newPos = aGesture.CurrentPos();
   611     m_currentPosition = newPos;
   610     m_currentPosition = newPos;
   612     if (m_webView->inPageViewMode()) {
   611     if (m_webView->inPageViewMode()) {
   613         if (!m_pageOverviewScrollPeriodic->IsActive()){
   612         if (!m_pageOverviewScrollPeriodic->IsActive()){
   614             m_pageOverviewScrollPeriodic->Start( 0, KPageOverviewScrollPeriodic, 
   613             m_pageOverviewScrollPeriodic->Start( 0, KPageOverviewScrollPeriodic, 
   615                                                 TCallBack(&pageOverviewScrollCallback, this));
   614                                                 TCallBack(&pageOverviewScrollCallback, this));
   621         setupScrolling(newPos);    
   620         setupScrolling(newPos);    
   622     }
   621     }
   623 }
   622 }
   624 
   623 
   625 
   624 
   626 void WebPageScrollHandler::handleTouchDownGH(const TGestureEvent& aEvent)
   625 void WebPageScrollHandler::handleTouchDownGH(const TStmGestureEvent& aGesture)
   627 {
   626 {
   628     TPoint newPos = aEvent.CurrentPos();
   627     TPoint newPos = aGesture.CurrentPos();
   629     m_lastMoveEventTime = 0; 
   628     m_lastMoveEventTime = 0; 
   630     m_lastPosition = newPos;
   629     m_lastPosition = newPos;
   631     m_currentPosition = newPos;
   630     m_currentPosition = newPos;
   632     m_webView->setViewIsScrolling(false);      
   631     m_webView->setViewIsScrolling(false);      
   633     m_webView->toggleRepaintTimer(true);
   632     m_webView->toggleRepaintTimer(true);
   638     m_scrollableView.m_scrollingElement = NULL;
   637     m_scrollableView.m_scrollingElement = NULL;
   639     m_scrollableView.m_frameView = NULL;
   638     m_scrollableView.m_frameView = NULL;
   640 }
   639 }
   641 
   640 
   642 
   641 
   643 void WebPageScrollHandler::handleTouchUpGH(const TGestureEvent& aEvent)
   642 void WebPageScrollHandler::handleTouchUpGH(const TStmGestureEvent& aGesture)
   644 {
   643 {
   645     bool decelDoesScrollbars = false;
   644     bool decelDoesScrollbars = false;
   646     TPoint newPos = aEvent.CurrentPos();
   645     TPoint newPos = aGesture.CurrentPos();
   647 
   646 
   648     if (m_webView->inPageViewMode()) {
   647     if (m_webView->inPageViewMode()) {
   649         if (m_pageOverviewScrollPeriodic->IsActive()){ 
   648         if (m_pageOverviewScrollPeriodic->IsActive()){ 
   650             m_pageOverviewScrollPeriodic->Cancel();
   649             m_pageOverviewScrollPeriodic->Cancel();
   651         }
   650         }
   655         m_webView->toggleRepaintTimer(true);
   654         m_webView->toggleRepaintTimer(true);
   656     }
   655     }
   657     else {
   656     else {
   658         m_scrollTimer->Cancel();
   657         m_scrollTimer->Cancel();
   659         m_lastPosition = TPoint(0, 0);
   658         m_lastPosition = TPoint(0, 0);
   660         decelDoesScrollbars = startDeceleration(aEvent);
   659         decelDoesScrollbars = startDeceleration(aGesture);
   661                     
   660                     
   662         if (m_webView->viewIsScrolling()) {
   661         if (m_webView->viewIsScrolling()) {
   663             Frame* frame = m_webView->page()->focusController()->focusedOrMainFrame();
   662             Frame* frame = m_webView->page()->focusController()->focusedOrMainFrame();
   664             frame->bridge()->sendScrollEvent();                            
   663             frame->bridge()->sendScrollEvent();                            
   665         }
   664         }
   673         m_lastMoveEventTime = 0;
   672         m_lastMoveEventTime = 0;
   674     }
   673     }
   675 }
   674 }
   676 
   675 
   677 
   676 
   678 bool WebPageScrollHandler::startDeceleration(const TGestureEvent& aEvent)
   677 bool WebPageScrollHandler::startDeceleration(const TStmGestureEvent& aGesture)
   679 {
   678 {
   680     bool started = false;
   679     bool started = false;
   681     TRealPoint gstSpeed = aEvent.Speed();
   680     TRealPoint gstSpeed = aGesture.Speed();
   682     if (Abs(gstSpeed.iX / gstSpeed.iY) <= KTanOfThresholdAngle) {
   681     if (Abs(gstSpeed.iX / gstSpeed.iY) <= KTanOfThresholdAngle) {
   683        gstSpeed.iX = 0;
   682        gstSpeed.iX = 0;
   684     }
   683     }
   685     
   684     
   686     if (Abs(gstSpeed.iY / gstSpeed.iX) <= KTanOfThresholdAngle) { 
   685     if (Abs(gstSpeed.iY / gstSpeed.iX) <= KTanOfThresholdAngle) {