Changed the point for searching clickable node to get focus ring rect.
[framework/web/webkit-efl.git] / Source / WebKit2 / WebProcess / WebPage / efl / WebPageEfl.cpp
index 412487f..37b51cd 100755 (executable)
@@ -900,7 +900,7 @@ static IntRect getNodeRect(Node* node, Node* focusableNode, bool isImage)
 #if ENABLE(TIZEN_WEBKIT2_HIT_TEST)
 #if ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
 #if ENABLE(TOUCH_ADJUSTMENT)
-static IntRect getFocusedRect(HitTestResult hitTestResult, Page* page, const IntSize& area)
+static IntRect getFocusedRect(HitTestResult hitTestResult, Page* page, const IntPoint& point, const IntSize& area)
 #else
 static IntRect getFocusedRect(HitTestResult hitTestResult, Page* page)
 #endif
@@ -910,7 +910,7 @@ static IntRect getFocusedRect(HitTestResult hitTestResult, Page* page)
     Node* adjustedNode = 0;
     IntPoint adustedPoint;
     Frame* mainFrame = page->mainFrame();
-    mainFrame->eventHandler()->bestClickableNodeForTouchPoint(hitTestResult.roundedPoint(), IntSize(area.width() / 2, area.height() / 2), adustedPoint, adjustedNode);
+    mainFrame->eventHandler()->bestClickableNodeForTouchPoint(point, IntSize(area.width() / 2, area.height() / 2), adustedPoint, adjustedNode);
 
     if (adjustedNode)
         node = adjustedNode;
@@ -922,7 +922,7 @@ static IntRect getFocusedRect(HitTestResult hitTestResult, Page* page)
     Node* focusableNode = node;
     while (focusableNode) {
         RenderObject* renderer = focusableNode->renderer();
-        if (renderer && renderer->isRoot())
+        if (renderer && (renderer->isBody() || renderer->isRenderView() || renderer->isRoot()))
             break;
 
         if (focusableNode->isFocusable()) {
@@ -934,6 +934,14 @@ static IntRect getFocusedRect(HitTestResult hitTestResult, Page* page)
             break;
         }
 
+        if (focusableNode->supportsFocus()
+            || focusableNode->hasEventListeners(eventNames().clickEvent)
+            || focusableNode->hasEventListeners(eventNames().mousedownEvent)
+            || focusableNode->hasEventListeners(eventNames().mouseupEvent)) {
+            isFocusRingDrawable = true;
+            break;
+        }
+
         focusableNode = focusableNode->parentNode();
     }
 
@@ -990,7 +998,7 @@ void WebPage::hitTestResultAtPoint(const IntPoint& point, int hitTestMode, WebHi
 
 #if ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
 #if ENABLE(TOUCH_ADJUSTMENT)
-    hitTestResultData.focusedRect = getFocusedRect(hitTestResult, m_page.get(), area);
+    hitTestResultData.focusedRect = getFocusedRect(hitTestResult, m_page.get(), point, area);
 #else
     hitTestResultData.focusedRect = getFocusedRect(hitTestResult, m_page.get());
 #endif