HitTestResult result = hitTestResultAtPoint(point, false);
Node* node = result.innerNode();
if (!node) {
- changeFocusedFrame(m_frame->page() ? m_frame->page()->mainFrame() : 0);
- setMousePressNode(0);
+ changeFocusedFrameAndNode(0);
return false;
}
&& renderer->enclosingLayer()->hasAcceleratedTouchScrolling()
&& renderer->enclosingLayer()->layerForScrollingContents()) {
overflowRenderer = renderer;
- changeFocusedFrame(node->document()->frame());
- setMousePressNode(node);
+ changeFocusedFrameAndNode(node);
return true;
}
}
// Find overflow node.
if (renderer->isBox() && toRenderBox(renderer)->scrollsOverflow()
&& toRenderBox(renderer)->canBeScrolledAndHasScrollableArea()) {
- changeFocusedFrame(node->document()->frame());
- setMousePressNode(node);
+ changeFocusedFrameAndNode(node);
return true;
}
#if ENABLE(TIZEN_INPUT_BOX_SCROLL)
// Setting mouse press for inline text box
if (renderer->isBox() && renderer->isTextField()) {
- changeFocusedFrame(node->document()->frame());
- setMousePressNode(node);
+ changeFocusedFrameAndNode(node);
return true;
}
#endif
node = 0;
} while (node);
- changeFocusedFrame(m_frame->page() ? m_frame->page()->mainFrame() : 0);
- setMousePressNode(0);
+ changeFocusedFrameAndNode(0);
return false;
}
-void EventHandler::changeFocusedFrame(PassRefPtr<Frame> targetFrame)
+void EventHandler::changeFocusedFrameAndNode(PassRefPtr<Node> targetNode)
{
if (!m_frame->page())
return;
- bool changedFocusedFrame = targetFrame != m_frame->page()->focusController()->focusedOrMainFrame();
- if (changedFocusedFrame)
- m_frame->page()->focusController()->setFocusedFrame(targetFrame);
+ if (!targetNode) {
+ m_frame->page()->focusController()->setFocusedFrame(m_frame->page()->mainFrame());
+ setMousePressNode(0);
+ return;
+ }
+
+ setMousePressNode(0);
+ Frame* targetFrame = targetNode->document()->frame();
+ m_frame->page()->focusController()->setFocusedFrame(targetFrame);
+ targetFrame->eventHandler()->setMousePressNode(targetNode);
}
#endif
#if ENABLE(TIZEN_CSS_OVERFLOW_SCROLL_ACCELERATION)
bool scrollOverflow(const FloatPoint&);
bool setMousePressNodeAtPoint(const IntPoint&, bool checkOverflowLayer, RenderObject*&);
- void changeFocusedFrame(PassRefPtr<Frame>);
+ void changeFocusedFrameAndNode(PassRefPtr<Node>);
#endif
bool scrollRecursively(ScrollDirection, ScrollGranularity, Node* startingNode = 0);
bool logicalScrollRecursively(ScrollLogicalDirection, ScrollGranularity, Node* startingNode = 0);