webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp
changeset 8 7c90e6132015
parent 0 dd21522fd290
child 13 10e98eab6f85
equal deleted inserted replaced
0:dd21522fd290 8:7c90e6132015
    51 #include "WebFrameBridge.h"
    51 #include "WebFrameBridge.h"
    52 #include "Page.h"
    52 #include "Page.h"
    53 #include "Chrome.h"
    53 #include "Chrome.h"
    54 #include "ChromeClient.h"
    54 #include "ChromeClient.h"
    55 #include "FocusController.h"
    55 #include "FocusController.h"
    56 
    56 #include "WebTabbedNavigation.h"
       
    57 #include "PluginHandler.h"
    57 
    58 
    58 #include "WebKitLogger.h"
    59 #include "WebKitLogger.h"
    59 using namespace WebCore;
    60 using namespace WebCore;
    60 using namespace EventNames;
    61 using namespace EventNames;
    61 using namespace RT_GestureHelper;
    62 using namespace RT_GestureHelper;
   128  * EGestureFlick - "fast" drag + touch up - events sent: EGestureFlick, 
   129  * EGestureFlick - "fast" drag + touch up - events sent: EGestureFlick, 
   129  *                  EGestureReleased
   130  *                  EGestureReleased
   130  * EGestureDrop -  drag + touch up, !(EGestureSwipe || EGestureFlick) - events
   131  * EGestureDrop -  drag + touch up, !(EGestureSwipe || EGestureFlick) - events
   131  *                 sent: EGestureDrop, EGestureReleased
   132  *                 sent: EGestureDrop, EGestureReleased
   132  */
   133  */
   133 void WebPointerEventHandler::HandleGestureL( const MGestureEvent& aEvent )
   134 void WebPointerEventHandler::HandleGestureL( const TGestureEvent& aEvent )
   134 {
   135 {
   135     TGestureCode gtype = const_cast<MGestureEvent&>(aEvent).Code(MGestureEvent::EAxisBoth);
   136     TGestureCode gtype = aEvent.Code(EAxisBoth);
       
   137     TPoint gpos = aEvent.CurrentPos();
       
   138     
       
   139     TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType();
       
   140     
       
   141     PluginSkin* plugin = m_webview->mainFrame()->focusedPlugin();
       
   142     if (plugin && plugin->pluginWin()) {
       
   143       if (plugin->pluginWin()->HandleGesture(aEvent)) {
       
   144           return;
       
   145       }
       
   146     }
   136     updateCursor(aEvent.CurrentPos());
   147     updateCursor(aEvent.CurrentPos());
   137 
   148 
   138     switch (gtype) {
   149     switch (gtype) {
   139       // sent on touch down
   150       // sent on touch down
   140       case EGestureStart:  
   151       case EGestureStart:  
   202 
   213 
   203 
   214 
   204 // ======================================================================
   215 // ======================================================================
   205 // WebPointerEventHandler::handleTap
   216 // WebPointerEventHandler::handleTap
   206 // ======================================================================
   217 // ======================================================================
   207 void WebPointerEventHandler::handleTapL(const MGestureEvent& aEvent)
   218 void WebPointerEventHandler::handleTapL(const TGestureEvent& aEvent)
   208 {
   219 {
   209     m_buttonDownTimer.stop();
   220     m_buttonDownTimer.stop();
   210     m_lastTapEvent = m_currentEvent; 
   221     m_lastTapEvent = m_currentEvent; 
   211     if(!m_webview->inPageViewMode()){
   222     if(!m_webview->inPageViewMode()){
   212     	doTapL();
   223     	doTapL();
   213     }
   224     }
   214 }
   225 }
   215 // ======================================================================
   226 // ======================================================================
   216 //  WebPointerEventHandler::handleDoubleTap
   227 //  WebPointerEventHandler::handleDoubleTap
   217 //======================================================================
   228 //======================================================================
   218 void WebPointerEventHandler::handleDoubleTap(const MGestureEvent& aEvent)
   229 void WebPointerEventHandler::handleDoubleTap(const TGestureEvent& aEvent)
   219 {
   230 {
   220     if ( !m_webview->viewIsScrolling() &&
   231     if ( !m_webview->viewIsScrolling() &&
   221          (m_webview->brCtl()->capabilities() & TBrCtlDefs::ECapabilityFitToScreen)) {
   232          (m_webview->brCtl()->capabilities() & TBrCtlDefs::ECapabilityFitToScreen)) {
   222         if (m_isHighlighted){
   233         if (m_isHighlighted){
   223             dehighlight();                
   234             dehighlight();                
   230 }
   241 }
   231 
   242 
   232 // ======================================================================
   243 // ======================================================================
   233 // WebPointerEventHandler::handleTouchDownL
   244 // WebPointerEventHandler::handleTouchDownL
   234 //======================================================================
   245 //======================================================================
   235 void WebPointerEventHandler::handleTouchDownL(const MGestureEvent& aEvent)
   246 void WebPointerEventHandler::handleTouchDownL(const TGestureEvent& aEvent)
   236 {
   247 {
   237     TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType();
   248     TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType();
       
   249     PluginHandler* pluginHandler = WebCore::StaticObjectsContainer::instance()->pluginHandler();
       
   250     PluginSkin* pluginToActivate = pluginHandler->pluginToActivate();
   238     m_buttonDownEvent = m_currentEvent;
   251     m_buttonDownEvent = m_currentEvent;
   239     m_highlightPos = aEvent.CurrentPos();
   252     m_highlightPos = aEvent.CurrentPos();
   240     
   253     
   241     if ( !m_buttonDownTimer.isActive() && !m_webview->inPageViewMode() ){
   254     if ( !m_buttonDownTimer.isActive() && !m_webview->inPageViewMode() && 
       
   255          !pluginToActivate ){
   242         m_buttonDownTimer.startOneShot(0.1f);        
   256         m_buttonDownTimer.startOneShot(0.1f);        
   243     }
   257     }
   244 
   258 
   245     m_webview->pageScrollHandler()->handleTouchDownGH(aEvent);
   259     m_webview->pageScrollHandler()->handleTouchDownGH(aEvent);
   246 
   260 
   252             }
   266             }
   253             else {
   267             else {
   254                 plugin->pluginWin()->HandlePointerEventL(m_buttonDownEvent);
   268                 plugin->pluginWin()->HandlePointerEventL(m_buttonDownEvent);
   255             }
   269             }
   256         }
   270         }
       
   271     }
       
   272     if (pluginToActivate) {
       
   273         Frame* coreFrame = core(m_webview->mainFrame());
       
   274         coreFrame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(m_buttonDownEvent));
   257     }    
   275     }    
   258     /*
   276     /*
   259      * After introducing "link selection" pointer down action is done in 
   277      * After introducing "link selection" pointer down action is done in 
   260      * buttondown timer callback. When "down" gesture event is arrived we start 
   278      * buttondown timer callback. When "down" gesture event is arrived we start 
   261      * timer end exit, so gesture helper is ready to deliver next gesture event. 
   279      * timer end exit, so gesture helper is ready to deliver next gesture event. 
   271 }
   289 }
   272 
   290 
   273 // ======================================================================
   291 // ======================================================================
   274 // WebPointerEventHandler::handleTouchUp 
   292 // WebPointerEventHandler::handleTouchUp 
   275 // ======================================================================
   293 // ======================================================================
   276 void WebPointerEventHandler::handleTouchUp(const MGestureEvent& aEvent)
   294 void WebPointerEventHandler::handleTouchUp(const TGestureEvent& aEvent)
   277 {
   295 {
   278     m_highlightPos = TPoint(-1,-1);
   296     m_highlightPos = TPoint(-1,-1);
   279     m_highlightedNode = NULL;
   297     m_highlightedNode = NULL;
   280        
   298        
   281     m_webview->pageScrollHandler()->handleTouchUpGH(aEvent);
   299     m_webview->pageScrollHandler()->handleTouchUpGH(aEvent);
   282 }
   300 }
   283 
   301 
   284 // ======================================================================
   302 // ======================================================================
   285 // WebPointerEventHandler::handleMoveL
   303 // WebPointerEventHandler::handleMoveL
   286 // ======================================================================
   304 // ======================================================================
   287 void WebPointerEventHandler::handleMove(const MGestureEvent& aEvent)
   305 void WebPointerEventHandler::handleMove(const TGestureEvent& aEvent)
   288 {
   306 {
   289     TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType();
   307     TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType();
   290     TPoint curPos = aEvent.CurrentPos();
   308     TPoint curPos = aEvent.CurrentPos();
   291     
   309     
   292     m_buttonDownTimer.stop();
   310     m_buttonDownTimer.stop();