fix bug for longpress gesture
authorSeongjun Yim <se201.yim@samsung.com>
Tue, 16 Apr 2013 05:23:54 +0000 (14:23 +0900)
committerSeongjun Yim <se201.yim@samsung.com>
Tue, 16 Apr 2013 06:08:53 +0000 (15:08 +0900)
Change-Id: Id1fe60c3688e5b7b4540dc9aa304c22eab45cae1
Signed-off-by: Seongjun Yim <se201.yim@samsung.com>
src/controls/FWebCtrl_GestureState.cpp

index 46c189b..bcf936d 100755 (executable)
@@ -143,18 +143,26 @@ _TapGestureState::OnTouchMoved(const _Control& source, const _TouchInfo& touchIn
 bool
 _TapGestureState::OnTouchReleased(const _Control& source, const _TouchInfo& touchInfo)
 {
-       if (__longPressed)
-       {
-               return true;
-       }
-
        const Ewk_View_Smart_Data* pSmartData = static_cast<Ewk_View_Smart_Data*>(evas_object_smart_data_get( __pWebCore->GetWebNativeNode()));
        SysAssertf(pSmartData, "Failed to get webkit smart data.");
 
        Ewk_Event_Gesture gestureEvent;
        Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(touchInfo.GetCurrentPosition())));
 
-       if (__doubleTapped)
+       if (__longPressed)
+       {
+               Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(__pWebCore->GetWebNativeNode(), absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+               SysTryReturn(NID_WEB_CTRL, pEwkHitTest, true, E_SYSTEM, "Failed to get hit test.");
+
+               String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
+
+               if (tagName.Equals(L"INPUT", false) || tagName.Equals(L"TEXTAREA", false))
+               {
+                       SetGestureEvent(gestureEvent, EWK_GESTURE_LONG_PRESS, absPoint, Point(0, 0), 0.0, 1);
+                       pSmartData->api->gesture_end(const_cast<Ewk_View_Smart_Data*>(pSmartData), &gestureEvent);
+               }
+       }
+       else if (__doubleTapped)
        {
                SetGestureEvent(gestureEvent, EWK_GESTURE_TAP, absPoint, Point(0, 0), 0.0, 2);
                pSmartData->api->gesture_start(const_cast<Ewk_View_Smart_Data*>(pSmartData), &gestureEvent);
@@ -162,8 +170,8 @@ _TapGestureState::OnTouchReleased(const _Control& source, const _TouchInfo& touc
        else
        {
                SetGestureEvent(gestureEvent, EWK_GESTURE_TAP, absPoint, Point(0, 0), 0.0, 1);
+               pSmartData->api->gesture_end(const_cast<Ewk_View_Smart_Data*>(pSmartData), &gestureEvent);
        }
-       pSmartData->api->gesture_end(const_cast<Ewk_View_Smart_Data*>(pSmartData), &gestureEvent);
 
        return true;
 }