Log Message
Refactoring: move EventHandler::targetNode into HitTestResult https://bugs.webkit.org/show_bug.cgi?id=94107
Patch by Iain Merrick <[email protected]> on 2012-08-15 Reviewed by Dimitri Glazkov. Source/WebCore: This static helper method in EventHandler was made public so that WebFrameImpl can call it. That's untidy because EventHandler isn't really involved. This patch turns it into an instance method of HitTestResult (with a wrapper in MouseEventWithHitTestResult for convenience). Pure refactoring, no behavior change, no new test needed. * page/EventHandler.cpp: (WebCore::EventHandler::selectClosestWordFromMouseEvent): (WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent): (WebCore::EventHandler::handleMousePressEventTripleClick): (WebCore::EventHandler::handleMousePressEventSingleClick): (WebCore::EventHandler::handleMousePressEvent): (WebCore::EventHandler::handleMouseDraggedEvent): (WebCore::EventHandler::updateSelectionForMouseDrag): (WebCore::EventHandler::handleMouseReleaseEvent): (WebCore::EventHandler::subframeForHitTestResult): (WebCore::EventHandler::selectCursor): (WebCore::EventHandler::handleMouseDoubleClickEvent): (WebCore::EventHandler::handleMouseMoveEvent): (WebCore::EventHandler::updateDragAndDrop): (WebCore::EventHandler::handleGestureEvent): (WebCore::EventHandler::sendContextMenuEvent): * page/EventHandler.h: (EventHandler): * page/MouseEventWithHitTestResults.h: (WebCore::MouseEventWithHitTestResults::targetNode): * page/chromium/EventHandlerChromium.cpp: (WebCore::EventHandler::passMousePressEventToSubframe): (WebCore::EventHandler::passWidgetMouseDownEventToWidget): * page/efl/EventHandlerEfl.cpp: (WebCore::EventHandler::passWidgetMouseDownEventToWidget): * page/gtk/EventHandlerGtk.cpp: (WebCore::EventHandler::passWidgetMouseDownEventToWidget): * page/mac/EventHandlerMac.mm: (WebCore::EventHandler::passWidgetMouseDownEventToWidget): (WebCore::EventHandler::passSubframeEventToSubframe): * page/wx/EventHandlerWx.cpp: (WebCore::EventHandler::passWidgetMouseDownEventToWidget): * rendering/HitTestResult.cpp: (WebCore::HitTestResult::targetNode): (WebCore): * rendering/HitTestResult.h: (HitTestResult): Source/WebKit/chromium: This static helper method in EventHandler was made public so that WebFrameImpl can call it. That's untidy because EventHandler isn't really involved. This patch turns it into an instance method of HitTestResult (with a wrapper in MouseEventWithHitTestResult for convenience). Pure refactoring, no behavior change, no new test needed. * src/WebFrameImpl.cpp: (WebKit::WebFrameImpl::visiblePositionForWindowPoint):
Modified Paths
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/page/EventHandler.cpp
- trunk/Source/WebCore/page/EventHandler.h
- trunk/Source/WebCore/page/MouseEventWithHitTestResults.h
- trunk/Source/WebCore/page/chromium/EventHandlerChromium.cpp
- trunk/Source/WebCore/page/efl/EventHandlerEfl.cpp
- trunk/Source/WebCore/page/gtk/EventHandlerGtk.cpp
- trunk/Source/WebCore/page/mac/EventHandlerMac.mm
- trunk/Source/WebCore/page/wx/EventHandlerWx.cpp
- trunk/Source/WebCore/rendering/HitTestResult.cpp
- trunk/Source/WebCore/rendering/HitTestResult.h
- trunk/Source/WebKit/chromium/ChangeLog
- trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp
Diff
Modified: trunk/Source/WebCore/ChangeLog (125714 => 125715)
--- trunk/Source/WebCore/ChangeLog 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/ChangeLog 2012-08-15 22:14:05 UTC (rev 125715)
@@ -1,3 +1,56 @@
+2012-08-15 Iain Merrick <[email protected]>
+
+ Refactoring: move EventHandler::targetNode into HitTestResult
+ https://bugs.webkit.org/show_bug.cgi?id=94107
+
+ Reviewed by Dimitri Glazkov.
+
+ This static helper method in EventHandler was made public so that
+ WebFrameImpl can call it. That's untidy because EventHandler isn't
+ really involved. This patch turns it into an instance method of
+ HitTestResult (with a wrapper in MouseEventWithHitTestResult for
+ convenience).
+
+ Pure refactoring, no behavior change, no new test needed.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::selectClosestWordFromMouseEvent):
+ (WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent):
+ (WebCore::EventHandler::handleMousePressEventTripleClick):
+ (WebCore::EventHandler::handleMousePressEventSingleClick):
+ (WebCore::EventHandler::handleMousePressEvent):
+ (WebCore::EventHandler::handleMouseDraggedEvent):
+ (WebCore::EventHandler::updateSelectionForMouseDrag):
+ (WebCore::EventHandler::handleMouseReleaseEvent):
+ (WebCore::EventHandler::subframeForHitTestResult):
+ (WebCore::EventHandler::selectCursor):
+ (WebCore::EventHandler::handleMouseDoubleClickEvent):
+ (WebCore::EventHandler::handleMouseMoveEvent):
+ (WebCore::EventHandler::updateDragAndDrop):
+ (WebCore::EventHandler::handleGestureEvent):
+ (WebCore::EventHandler::sendContextMenuEvent):
+ * page/EventHandler.h:
+ (EventHandler):
+ * page/MouseEventWithHitTestResults.h:
+ (WebCore::MouseEventWithHitTestResults::targetNode):
+ * page/chromium/EventHandlerChromium.cpp:
+ (WebCore::EventHandler::passMousePressEventToSubframe):
+ (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
+ * page/efl/EventHandlerEfl.cpp:
+ (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
+ * page/gtk/EventHandlerGtk.cpp:
+ (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
+ * page/mac/EventHandlerMac.mm:
+ (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
+ (WebCore::EventHandler::passSubframeEventToSubframe):
+ * page/wx/EventHandlerWx.cpp:
+ (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
+ * rendering/HitTestResult.cpp:
+ (WebCore::HitTestResult::targetNode):
+ (WebCore):
+ * rendering/HitTestResult.h:
+ (HitTestResult):
+
2012-08-15 David Grogan <[email protected]>
IndexedDB: Add some ASSERTs
Modified: trunk/Source/WebCore/page/EventHandler.cpp (125714 => 125715)
--- trunk/Source/WebCore/page/EventHandler.cpp 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/page/EventHandler.cpp 2012-08-15 22:14:05 UTC (rev 125715)
@@ -417,7 +417,7 @@
void EventHandler::selectClosestWordFromMouseEvent(const MouseEventWithHitTestResults& result)
{
- Node* innerNode = targetNode(result);
+ Node* innerNode = result.targetNode();
VisibleSelection newSelection;
if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) {
@@ -439,7 +439,7 @@
if (!result.hitTestResult().isLiveLink())
return selectClosestWordFromMouseEvent(result);
- Node* innerNode = targetNode(result);
+ Node* innerNode = result.targetNode();
if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) {
VisibleSelection newSelection;
@@ -475,7 +475,7 @@
if (event.event().button() != LeftButton)
return false;
- Node* innerNode = targetNode(event);
+ Node* innerNode = event.targetNode();
if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))
return false;
@@ -498,7 +498,7 @@
bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestResults& event)
{
m_frame->document()->updateLayoutIgnorePendingStylesheets();
- Node* innerNode = targetNode(event);
+ Node* innerNode = event.targetNode();
if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))
return false;
@@ -580,7 +580,7 @@
// If we got the event back, that must mean it wasn't prevented,
// so it's allowed to start a drag or selection.
- m_mouseDownMayStartSelect = canMouseDownStartSelect(targetNode(event));
+ m_mouseDownMayStartSelect = canMouseDownStartSelect(event.targetNode());
#if ENABLE(DRAG_SUPPORT)
// Careful that the drag starting logic stays in sync with eventMayStartDrag()
@@ -610,7 +610,7 @@
if (singleClick)
focusDocumentView();
- Node* innerNode = targetNode(event);
+ Node* innerNode = event.targetNode();
m_mousePressNode = innerNode;
#if ENABLE(DRAG_SUPPORT)
@@ -667,7 +667,7 @@
if (!m_mousePressed)
return false;
- Node* targetNode = EventHandler::targetNode(event);
+ Node* targetNode = event.targetNode();
if (event.event().button() != LeftButton || !targetNode)
return false;
@@ -782,7 +782,7 @@
if (!m_mouseDownMayStartSelect)
return;
- Node* target = targetNode(hitTestResult);
+ Node* target = hitTestResult.targetNode();
if (!target)
return;
@@ -875,7 +875,7 @@
&& m_frame->selection()->isRange()
&& event.event().button() != RightButton) {
VisibleSelection newSelection;
- Node* node = targetNode(event);
+ Node* node = event.targetNode();
bool caretBrowsing = m_frame->settings() && m_frame->settings()->caretBrowsingEnabled();
if (node && (caretBrowsing || node->rendererIsEditable()) && node->renderer()) {
VisiblePosition pos = node->renderer()->positionForPoint(event.localPoint());
@@ -1250,7 +1250,7 @@
{
if (!hitTestResult.isOverWidget())
return 0;
- return subframeForTargetNode(targetNode(hitTestResult));
+ return subframeForTargetNode(hitTestResult.targetNode());
}
Frame* EventHandler::subframeForTargetNode(Node* node)
@@ -1291,7 +1291,7 @@
if (page->mainFrame()->eventHandler()->m_panScrollInProgress)
return NoCursorChange;
- Node* node = targetNode(event);
+ Node* node = event.targetNode();
RenderObject* renderer = node ? node->renderer() : 0;
RenderStyle* style = renderer ? renderer->style() : 0;
bool horizontalText = !style || style->isHorizontalWritingMode();
@@ -1461,27 +1461,6 @@
return view ? view->windowToContents(windowPoint) : windowPoint;
}
-Node* EventHandler::targetNode(const MouseEventWithHitTestResults& event)
-{
- return targetNode(event.hitTestResult());
-}
-
-Node* EventHandler::targetNode(const HitTestResult& hitTestResult)
-{
- Node* node = hitTestResult.innerNode();
- if (!node)
- return 0;
- if (node->inDocument())
- return node;
-
- Element* element = node->parentElement();
- if (element && element->inDocument())
- return element;
-
- return node;
-
-}
-
bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent)
{
RefPtr<FrameView> protector(m_frame->view());
@@ -1527,12 +1506,12 @@
LayoutPoint documentPoint = documentPointForWindowPoint(m_frame, mouseEvent.position());
MouseEventWithHitTestResults mev = m_frame->document()->prepareMouseEvent(request, documentPoint, mouseEvent);
- if (!targetNode(mev)) {
+ if (!mev.targetNode()) {
invalidateClick();
return false;
}
- m_mousePressNode = targetNode(mev);
+ m_mousePressNode = mev.targetNode();
Frame* subframe = subframeForHitTestResult(mev);
if (subframe && passMousePressEventToSubframe(mev, subframe)) {
@@ -1540,7 +1519,7 @@
// the m_mousePressed flag, which may happen if an AppKit widget entered a modal event loop.
m_capturesDragging = subframe->eventHandler()->capturesDragging();
if (m_mousePressed && m_capturesDragging) {
- m_capturingMouseEventsNode = targetNode(mev);
+ m_capturingMouseEventsNode = mev.targetNode();
m_eventHandlerWillResetCapturingMouseEventsNode = true;
}
invalidateClick();
@@ -1562,7 +1541,7 @@
#endif
m_clickCount = mouseEvent.clickCount();
- m_clickNode = targetNode(mev);
+ m_clickNode = mev.targetNode();
if (FrameView* view = m_frame->view()) {
RenderLayer* layer = m_clickNode->renderer() ? m_clickNode->renderer()->enclosingLayer() : 0;
@@ -1578,7 +1557,7 @@
m_frame->selection()->setCaretBlinkingSuspended(true);
- bool swallowEvent = dispatchMouseEvent(eventNames().mousedownEvent, targetNode(mev), true, m_clickCount, mouseEvent, true);
+ bool swallowEvent = dispatchMouseEvent(eventNames().mousedownEvent, mev.targetNode(), true, m_clickCount, mouseEvent, true);
m_capturesDragging = !swallowEvent || mev.scrollbar();
// If the hit testing originally determined the event was in a scrollbar, refetch the MouseEventWithHitTestResults
@@ -1604,7 +1583,7 @@
// If a mouse event handler changes the input element type to one that has a widget associated,
// we'd like to EventHandler::handleMousePressEvent to pass the event to the widget and thus the
// event target node can't still be the shadow node.
- if (targetNode(mev)->isShadowRoot() && toShadowRoot(targetNode(mev))->host()->hasTagName(inputTag)) {
+ if (mev.targetNode()->isShadowRoot() && toShadowRoot(mev.targetNode())->host()->hasTagName(inputTag)) {
HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active);
mev = m_frame->document()->prepareMouseEvent(request, documentPoint, mouseEvent);
}
@@ -1646,9 +1625,9 @@
return true;
m_clickCount = mouseEvent.clickCount();
- bool swallowMouseUpEvent = dispatchMouseEvent(eventNames().mouseupEvent, targetNode(mev), true, m_clickCount, mouseEvent, false);
+ bool swallowMouseUpEvent = dispatchMouseEvent(eventNames().mouseupEvent, mev.targetNode(), true, m_clickCount, mouseEvent, false);
- bool swallowClickEvent = mouseEvent.button() != RightButton && targetNode(mev) == m_clickNode && dispatchMouseEvent(eventNames().clickEvent, targetNode(mev), true, m_clickCount, mouseEvent, true);
+ bool swallowClickEvent = mouseEvent.button() != RightButton && mev.targetNode() == m_clickNode && dispatchMouseEvent(eventNames().clickEvent, mev.targetNode(), true, m_clickCount, mouseEvent, true);
if (m_lastScrollbarUnderMouse)
swallowMouseUpEvent = m_lastScrollbarUnderMouse->mouseUp(mouseEvent);
@@ -1797,7 +1776,7 @@
if (newSubframe) {
// Update over/out state before passing the event to the subframe.
- updateMouseEventTargetNode(targetNode(mev), mouseEvent, true);
+ updateMouseEventTargetNode(mev.targetNode(), mouseEvent, true);
// Event dispatch in updateMouseEventTargetNode may have caused the subframe of the target
// node to be detached from its FrameView, in which case the event should not be passed.
@@ -1818,7 +1797,7 @@
if (swallowEvent)
return true;
- swallowEvent = dispatchMouseEvent(eventNames().mousemoveEvent, targetNode(mev), false, 0, mouseEvent, true);
+ swallowEvent = dispatchMouseEvent(eventNames().mousemoveEvent, mev.targetNode(), false, 0, mouseEvent, true);
#if ENABLE(DRAG_SUPPORT)
if (!swallowEvent)
swallowEvent = handleMouseDraggedEvent(mev);
@@ -1880,14 +1859,14 @@
if (subframe && passMouseReleaseEventToSubframe(mev, subframe))
return true;
- bool swallowMouseUpEvent = dispatchMouseEvent(eventNames().mouseupEvent, targetNode(mev), true, m_clickCount, mouseEvent, false);
+ bool swallowMouseUpEvent = dispatchMouseEvent(eventNames().mouseupEvent, mev.targetNode(), true, m_clickCount, mouseEvent, false);
- Node* clickTarget = targetNode(mev);
+ Node* clickTarget = mev.targetNode();
if (clickTarget)
clickTarget = clickTarget->shadowAncestorNode();
Node* adjustedClickNode = m_clickNode ? m_clickNode->shadowAncestorNode() : 0;
- bool swallowClickEvent = m_clickCount > 0 && mouseEvent.button() != RightButton && clickTarget == adjustedClickNode && dispatchMouseEvent(eventNames().clickEvent, targetNode(mev), true, m_clickCount, mouseEvent, true);
+ bool swallowClickEvent = m_clickCount > 0 && mouseEvent.button() != RightButton && clickTarget == adjustedClickNode && dispatchMouseEvent(eventNames().clickEvent, mev.targetNode(), true, m_clickCount, mouseEvent, true);
if (m_resizeLayer) {
m_resizeLayer->setInResizeMode(false);
@@ -1987,7 +1966,7 @@
MouseEventWithHitTestResults mev = prepareMouseEvent(request, event);
// Drag events should never go to text nodes (following IE, and proper mouseover/out dispatch)
- RefPtr<Node> newTarget = targetNode(mev);
+ RefPtr<Node> newTarget = mev.targetNode();
if (newTarget && newTarget->isTextNode())
newTarget = newTarget->parentNode();
@@ -2425,7 +2404,7 @@
if (!eventTarget) {
HitTestResult result = hitTestResultAtPoint(gestureEvent.position(), false, false, DontHitTestScrollbars, HitTestRequest::ReadOnly | HitTestRequest::Active);
- eventTarget = targetNode(result);
+ eventTarget = result.targetNode();
}
if (eventTarget) {
@@ -2580,12 +2559,12 @@
// FIXME: In the editable case, word selection sometimes selects content that isn't underneath the mouse.
// If the selection is non-editable, we do word selection to make it easier to use the contextual menu items
// available for text selections. But only if we're above text.
- && (m_frame->selection()->isContentEditable() || (targetNode(mev) && targetNode(mev)->isTextNode()))) {
+ && (m_frame->selection()->isContentEditable() || (mev.targetNode() && mev.targetNode()->isTextNode()))) {
m_mouseDownMayStartSelect = true; // context menu events are always allowed to perform a selection
selectClosestWordOrLinkFromMouseEvent(mev);
}
- swallowEvent = dispatchMouseEvent(eventNames().contextmenuEvent, targetNode(mev), true, 0, event, false);
+ swallowEvent = dispatchMouseEvent(eventNames().contextmenuEvent, mev.targetNode(), true, 0, event, false);
return swallowEvent;
}
Modified: trunk/Source/WebCore/page/EventHandler.h (125714 => 125715)
--- trunk/Source/WebCore/page/EventHandler.h 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/page/EventHandler.h 2012-08-15 22:14:05 UTC (rev 125715)
@@ -230,8 +230,6 @@
bool handleTouchEvent(const PlatformTouchEvent&);
#endif
- static Node* targetNode(const HitTestResult&);
-
private:
#if ENABLE(DRAG_SUPPORT)
static DragState& dragState();
@@ -247,8 +245,6 @@
bool handleMouseDoubleClickEvent(const PlatformMouseEvent&);
- static Node* targetNode(const MouseEventWithHitTestResults&);
-
bool handleMousePressEvent(const MouseEventWithHitTestResults&);
bool handleMousePressEventSingleClick(const MouseEventWithHitTestResults&);
bool handleMousePressEventDoubleClick(const MouseEventWithHitTestResults&);
Modified: trunk/Source/WebCore/page/MouseEventWithHitTestResults.h (125714 => 125715)
--- trunk/Source/WebCore/page/MouseEventWithHitTestResults.h 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/page/MouseEventWithHitTestResults.h 2012-08-15 22:14:05 UTC (rev 125715)
@@ -38,6 +38,7 @@
Scrollbar* scrollbar() const { return m_hitTestResult.scrollbar(); }
bool isOverLink() const;
bool isOverWidget() const { return m_hitTestResult.isOverWidget(); }
+ Node* targetNode() const { return m_hitTestResult.targetNode(); }
private:
PlatformMouseEvent m_event;
Modified: trunk/Source/WebCore/page/chromium/EventHandlerChromium.cpp (125714 => 125715)
--- trunk/Source/WebCore/page/chromium/EventHandlerChromium.cpp 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/page/chromium/EventHandlerChromium.cpp 2012-08-15 22:14:05 UTC (rev 125715)
@@ -61,7 +61,7 @@
IntPoint p = m_frame->view()->windowToContents(mev.event().position());
if (m_frame->selection()->contains(p)) {
VisiblePosition visiblePos(
- targetNode(mev)->renderer()->positionForPoint(mev.localPoint()));
+ mev.targetNode()->renderer()->positionForPoint(mev.localPoint()));
VisibleSelection newSelection(visiblePos);
if (m_frame->selection()->shouldChangeSelection(newSelection))
m_frame->selection()->setSelection(newSelection);
@@ -103,9 +103,9 @@
bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults& event)
{
// Figure out which view to send the event to.
- if (!targetNode(event) || !targetNode(event)->renderer() || !targetNode(event)->renderer()->isWidget())
+ if (!event.targetNode() || !event.targetNode()->renderer() || !event.targetNode()->renderer()->isWidget())
return false;
- return passMouseDownEventToWidget(toRenderWidget(targetNode(event)->renderer())->widget());
+ return passMouseDownEventToWidget(toRenderWidget(event.targetNode()->renderer())->widget());
}
bool EventHandler::passMouseDownEventToWidget(Widget* widget)
Modified: trunk/Source/WebCore/page/efl/EventHandlerEfl.cpp (125714 => 125715)
--- trunk/Source/WebCore/page/efl/EventHandlerEfl.cpp 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/page/efl/EventHandlerEfl.cpp 2012-08-15 22:14:05 UTC (rev 125715)
@@ -63,7 +63,7 @@
bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults& event)
{
- RenderObject* target = targetNode(event) ? targetNode(event)->renderer() : 0;
+ RenderObject* target = event.targetNode() ? event.targetNode()->renderer() : 0;
if (!target || !target->isWidget())
return false;
Modified: trunk/Source/WebCore/page/gtk/EventHandlerGtk.cpp (125714 => 125715)
--- trunk/Source/WebCore/page/gtk/EventHandlerGtk.cpp 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/page/gtk/EventHandlerGtk.cpp 2012-08-15 22:14:05 UTC (rev 125715)
@@ -59,7 +59,7 @@
bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults& event)
{
// Figure out which view to send the event to.
- RenderObject* target = targetNode(event) ? targetNode(event)->renderer() : 0;
+ RenderObject* target = event.targetNode() ? event.targetNode()->renderer() : 0;
if (!target || !target->isWidget())
return false;
return passMouseDownEventToWidget(toRenderWidget(target)->widget());
Modified: trunk/Source/WebCore/page/mac/EventHandlerMac.mm (125714 => 125715)
--- trunk/Source/WebCore/page/mac/EventHandlerMac.mm 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/page/mac/EventHandlerMac.mm 2012-08-15 22:14:05 UTC (rev 125715)
@@ -138,7 +138,7 @@
bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults& event)
{
// Figure out which view to send the event to.
- RenderObject* target = targetNode(event) ? targetNode(event)->renderer() : 0;
+ RenderObject* target = event.targetNode() ? event.targetNode()->renderer() : 0;
if (!target || !target->isWidget())
return false;
@@ -352,7 +352,7 @@
return true;
case NSLeftMouseDown: {
- Node* node = targetNode(event);
+ Node* node = event.targetNode();
if (!node)
return false;
RenderObject* renderer = node->renderer();
Modified: trunk/Source/WebCore/page/wx/EventHandlerWx.cpp (125714 => 125715)
--- trunk/Source/WebCore/page/wx/EventHandlerWx.cpp 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/page/wx/EventHandlerWx.cpp 2012-08-15 22:14:05 UTC (rev 125715)
@@ -63,10 +63,10 @@
bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults& event)
{
// Figure out which view to send the event to.
- if (!targetNode(event) || !targetNode(event)->renderer() || !targetNode(event)->renderer()->isWidget())
+ if (!event.targetNode() || !event.targetNode()->renderer() || !event.targetNode()->renderer()->isWidget())
return false;
- return passMouseDownEventToWidget(toRenderWidget(targetNode(event)->renderer())->widget());
+ return passMouseDownEventToWidget(toRenderWidget(event.targetNode()->renderer())->widget());
}
bool EventHandler::passWidgetMouseDownEventToWidget(RenderWidget* renderWidget)
Modified: trunk/Source/WebCore/rendering/HitTestResult.cpp (125714 => 125715)
--- trunk/Source/WebCore/rendering/HitTestResult.cpp 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/rendering/HitTestResult.cpp 2012-08-15 22:14:05 UTC (rev 125715)
@@ -795,4 +795,19 @@
return frame->editor()->dictationAlternativesForMarker(marker);
}
+Node* HitTestResult::targetNode() const
+{
+ Node* node = innerNode();
+ if (!node)
+ return 0;
+ if (node->inDocument())
+ return node;
+
+ Element* element = node->parentElement();
+ if (element && element->inDocument())
+ return element;
+
+ return node;
+}
+
} // namespace WebCore
Modified: trunk/Source/WebCore/rendering/HitTestResult.h (125714 => 125715)
--- trunk/Source/WebCore/rendering/HitTestResult.h 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebCore/rendering/HitTestResult.h 2012-08-15 22:14:05 UTC (rev 125715)
@@ -177,6 +177,8 @@
Vector<String> dictationAlternatives() const;
+ Node* targetNode() const;
+
private:
NodeSet& mutableRectBasedTestResult(); // See above.
Modified: trunk/Source/WebKit/chromium/ChangeLog (125714 => 125715)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-08-15 22:14:05 UTC (rev 125715)
@@ -1,3 +1,21 @@
+2012-08-15 Iain Merrick <[email protected]>
+
+ Refactoring: move EventHandler::targetNode into HitTestResult
+ https://bugs.webkit.org/show_bug.cgi?id=94107
+
+ Reviewed by Dimitri Glazkov.
+
+ This static helper method in EventHandler was made public so that
+ WebFrameImpl can call it. That's untidy because EventHandler isn't
+ really involved. This patch turns it into an instance method of
+ HitTestResult (with a wrapper in MouseEventWithHitTestResult for
+ convenience).
+
+ Pure refactoring, no behavior change, no new test needed.
+
+ * src/WebFrameImpl.cpp:
+ (WebKit::WebFrameImpl::visiblePositionForWindowPoint):
+
2012-08-15 David Grogan <[email protected]>
IndexedDB: Add some ASSERTs
Modified: trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp (125714 => 125715)
--- trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp 2012-08-15 22:07:46 UTC (rev 125714)
+++ trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp 2012-08-15 22:14:05 UTC (rev 125715)
@@ -1503,7 +1503,7 @@
frame()->document()->renderView()->layer()->hitTest(request, result);
- Node* node = EventHandler::targetNode(result);
+ Node* node = result.targetNode();
if (!node)
return VisiblePosition();
_______________________________________________ webkit-changes mailing list [email protected] http://lists.webkit.org/mailman/listinfo/webkit-changes
