Changeset 83153 in webkit
- Timestamp:
- Apr 7, 2011 2:04:54 AM (13 years ago)
- Location:
- trunk/Source
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r83151 r83153 1 2011-04-07 Alice Boxhall <aboxhall@chromium.org> 2 3 Reviewed by Ryosuke Niwa. 4 5 Move the MouseEventWithHitTestResults::targetNode() method on to EventHandler. 6 https://bugs.webkit.org/show_bug.cgi?id=57921 7 8 Moves the MouseEventWithHitTestResults::targetNode() method on to EventHandler, so 9 that the same logic can be used for a HitTestResult. 10 11 No visible changes, just cleanup, so no tests. 12 13 * page/EventHandler.cpp: 14 (WebCore::EventHandler::selectClosestWordFromMouseEvent): 15 (WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent): 16 (WebCore::EventHandler::handleMousePressEventTripleClick): 17 (WebCore::EventHandler::handleMousePressEventSingleClick): 18 (WebCore::EventHandler::handleMousePressEvent): 19 (WebCore::EventHandler::handleMouseDraggedEvent): 20 (WebCore::EventHandler::handleMouseReleaseEvent): 21 (WebCore::EventHandler::subframeForHitTestResult): 22 Made public static member, so that it can access targetNode(), and be accessed by 23 webkitwebview in gtk. 24 (WebCore::EventHandler::selectCursor): 25 (WebCore::EventHandler::targetNode): 26 (WebCore::EventHandler::handleMouseDoubleClickEvent): 27 (WebCore::EventHandler::handleMouseMoveEvent): 28 (WebCore::EventHandler::updateDragAndDrop): 29 (WebCore::EventHandler::sendContextMenuEvent): 30 * page/EventHandler.h: 31 * page/MouseEventWithHitTestResults.cpp: 32 (WebCore::MouseEventWithHitTestResults::MouseEventWithHitTestResults): 33 * page/MouseEventWithHitTestResults.h: 34 * page/android/EventHandlerAndroid.cpp: 35 (WebCore::EventHandler::passWidgetMouseDownEventToWidget): 36 * page/brew/EventHandlerBrew.cpp: 37 (WebCore::EventHandler::passWidgetMouseDownEventToWidget): 38 * page/chromium/EventHandlerChromium.cpp: 39 (WebCore::EventHandler::passMousePressEventToSubframe): 40 (WebCore::EventHandler::passWidgetMouseDownEventToWidget): 41 * page/efl/EventHandlerEfl.cpp: 42 (WebCore::EventHandler::passWidgetMouseDownEventToWidget): 43 * page/gtk/EventHandlerGtk.cpp: 44 (WebCore::EventHandler::passWidgetMouseDownEventToWidget): 45 * page/haiku/EventHandlerHaiku.cpp: 46 (WebCore::EventHandler::passWidgetMouseDownEventToWidget): 47 * page/mac/EventHandlerMac.mm: 48 (WebCore::EventHandler::passWidgetMouseDownEventToWidget): 49 (WebCore::EventHandler::passSubframeEventToSubframe): 50 * page/wx/EventHandlerWx.cpp: 51 (WebCore::EventHandler::passWidgetMouseDownEventToWidget): 52 1 53 2011-04-07 Pavel Podivilov <podivilov@chromium.org> 2 54 -
trunk/Source/WebCore/page/EventHandler.cpp
r82870 r83153 128 128 const double fakeMouseMoveInterval = 0.1; 129 129 130 static Frame* subframeForHitTestResult(const MouseEventWithHitTestResults&);131 132 130 static inline bool scrollNode(float delta, WheelEvent::Granularity granularity, ScrollDirection positiveDirection, ScrollDirection negativeDirection, Node* node, Node** stopNode) 133 131 { … … 275 273 void EventHandler::selectClosestWordFromMouseEvent(const MouseEventWithHitTestResults& result) 276 274 { 277 Node* innerNode = result.targetNode();275 Node* innerNode = targetNode(result); 278 276 VisibleSelection newSelection; 279 277 … … 302 300 return selectClosestWordFromMouseEvent(result); 303 301 304 Node* innerNode = result.targetNode();302 Node* innerNode = targetNode(result); 305 303 306 304 if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) { … … 344 342 return false; 345 343 346 Node* innerNode = event.targetNode();344 Node* innerNode = targetNode(event); 347 345 if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect)) 348 346 return false; … … 374 372 bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestResults& event) 375 373 { 376 Node* innerNode = event.targetNode();374 Node* innerNode = targetNode(event); 377 375 if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect)) 378 376 return false; … … 450 448 // If we got the event back, that must mean it wasn't prevented, 451 449 // so it's allowed to start a drag or selection. 452 m_mouseDownMayStartSelect = canMouseDownStartSelect( event.targetNode());450 m_mouseDownMayStartSelect = canMouseDownStartSelect(targetNode(event)); 453 451 454 452 #if ENABLE(DRAG_SUPPORT) … … 480 478 focusDocumentView(); 481 479 482 Node* innerNode = event.targetNode();480 Node* innerNode = targetNode(event); 483 481 484 482 m_mousePressNode = innerNode; … … 537 535 return false; 538 536 539 Node* targetNode = event.targetNode();537 Node* targetNode = EventHandler::targetNode(event); 540 538 if (event.event().button() != LeftButton || !targetNode || !targetNode->renderer()) 541 539 return false; … … 723 721 && event.event().button() != RightButton) { 724 722 VisibleSelection newSelection; 725 Node* node = event.targetNode();723 Node* node = targetNode(event); 726 724 bool caretBrowsing = m_frame->settings()->caretBrowsingEnabled(); 727 725 if (node && (caretBrowsing || node->rendererIsEditable()) && node->renderer()) { … … 1098 1096 } 1099 1097 1100 Frame* subframeForHitTestResult(const MouseEventWithHitTestResults& hitTestResult)1098 Frame* EventHandler::subframeForHitTestResult(const MouseEventWithHitTestResults& hitTestResult) 1101 1099 { 1102 1100 if (!hitTestResult.isOverWidget()) 1103 1101 return 0; 1104 return EventHandler::subframeForTargetNode(hitTestResult.targetNode());1102 return subframeForTargetNode(targetNode(hitTestResult)); 1105 1103 } 1106 1104 … … 1134 1132 Cursor EventHandler::selectCursor(const MouseEventWithHitTestResults& event, Scrollbar* scrollbar) 1135 1133 { 1136 Node* node = event.targetNode();1134 Node* node = targetNode(event); 1137 1135 RenderObject* renderer = node ? node->renderer() : 0; 1138 1136 RenderStyle* style = renderer ? renderer->style() : 0; … … 1299 1297 } 1300 1298 1299 Node* EventHandler::targetNode(const MouseEventWithHitTestResults& event) 1300 { 1301 return targetNode(event.hitTestResult()); 1302 } 1303 1304 Node* EventHandler::targetNode(const HitTestResult& hitTestResult) 1305 { 1306 Node* node = hitTestResult.innerNode(); 1307 if (!node) 1308 return 0; 1309 if (node->inDocument()) 1310 return node; 1311 1312 Element* element = node->parentElement(); 1313 if (element && element->inDocument()) 1314 return element; 1315 1316 return node; 1317 1318 } 1319 1301 1320 bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent) 1302 1321 { … … 1329 1348 MouseEventWithHitTestResults mev = m_frame->document()->prepareMouseEvent(request, documentPoint, mouseEvent); 1330 1349 1331 if (! mev.targetNode()) {1350 if (!targetNode(mev)) { 1332 1351 invalidateClick(); 1333 1352 return false; 1334 1353 } 1335 1354 1336 m_mousePressNode = mev.targetNode();1355 m_mousePressNode = targetNode(mev); 1337 1356 1338 1357 if (InspectorInstrumentation::handleMousePress(m_frame->page())) { … … 1347 1366 m_capturesDragging = subframe->eventHandler()->capturesDragging(); 1348 1367 if (m_mousePressed && m_capturesDragging) { 1349 m_capturingMouseEventsNode = mev.targetNode();1368 m_capturingMouseEventsNode = targetNode(mev); 1350 1369 m_eventHandlerWillResetCapturingMouseEventsNode = true; 1351 1370 } … … 1364 1383 1365 1384 m_clickCount = mouseEvent.clickCount(); 1366 m_clickNode = mev.targetNode();1385 m_clickNode = targetNode(mev); 1367 1386 1368 1387 if (FrameView* view = m_frame->view()) { … … 1380 1399 m_frame->selection()->setCaretBlinkingSuspended(true); 1381 1400 1382 bool swallowEvent = dispatchMouseEvent(eventNames().mousedownEvent, mev.targetNode(), true, m_clickCount, mouseEvent, true);1401 bool swallowEvent = dispatchMouseEvent(eventNames().mousedownEvent, targetNode(mev), true, m_clickCount, mouseEvent, true); 1383 1402 m_capturesDragging = !swallowEvent; 1384 1403 … … 1406 1425 // we'd like to EventHandler::handleMousePressEvent to pass the event to the widget and thus the 1407 1426 // event target node can't still be the shadow node. 1408 if ( mev.targetNode()->isShadowRoot() && mev.targetNode()->shadowHost()->hasTagName(inputTag)) {1427 if (targetNode(mev)->isShadowRoot() && targetNode(mev)->shadowHost()->hasTagName(inputTag)) { 1409 1428 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active); 1410 1429 mev = m_frame->document()->prepareMouseEvent(request, documentPoint, mouseEvent); … … 1447 1466 1448 1467 m_clickCount = mouseEvent.clickCount(); 1449 bool swallowMouseUpEvent = dispatchMouseEvent(eventNames().mouseupEvent, mev.targetNode(), true, m_clickCount, mouseEvent, false);1450 1451 bool swallowClickEvent = mouseEvent.button() != RightButton && mev.targetNode() == m_clickNode && dispatchMouseEvent(eventNames().clickEvent, mev.targetNode(), true, m_clickCount, mouseEvent, true);1468 bool swallowMouseUpEvent = dispatchMouseEvent(eventNames().mouseupEvent, targetNode(mev), true, m_clickCount, mouseEvent, false); 1469 1470 bool swallowClickEvent = mouseEvent.button() != RightButton && targetNode(mev) == m_clickNode && dispatchMouseEvent(eventNames().clickEvent, targetNode(mev), true, m_clickCount, mouseEvent, true); 1452 1471 1453 1472 if (m_lastScrollbarUnderMouse) … … 1575 1594 if (newSubframe) { 1576 1595 // Update over/out state before passing the event to the subframe. 1577 updateMouseEventTargetNode( mev.targetNode(), mouseEvent, true);1596 updateMouseEventTargetNode(targetNode(mev), mouseEvent, true); 1578 1597 1579 1598 // Event dispatch in updateMouseEventTargetNode may have caused the subframe of the target … … 1590 1609 // effect on plugins (which matches Firefox). 1591 1610 bool overPluginElement = false; 1592 if ( mev.targetNode() && mev.targetNode()->isHTMLElement()) {1593 HTMLElement* el = toHTMLElement( mev.targetNode());1611 if (targetNode(mev) && targetNode(mev)->isHTMLElement()) { 1612 HTMLElement* el = toHTMLElement(targetNode(mev)); 1594 1613 overPluginElement = el->hasTagName(appletTag) || el->hasTagName(objectTag) || el->hasTagName(embedTag); 1595 1614 } … … 1607 1626 return true; 1608 1627 1609 swallowEvent = dispatchMouseEvent(eventNames().mousemoveEvent, mev.targetNode(), false, 0, mouseEvent, true);1628 swallowEvent = dispatchMouseEvent(eventNames().mousemoveEvent, targetNode(mev), false, 0, mouseEvent, true); 1610 1629 #if ENABLE(DRAG_SUPPORT) 1611 1630 if (!swallowEvent) … … 1662 1681 return true; 1663 1682 1664 bool swallowMouseUpEvent = dispatchMouseEvent(eventNames().mouseupEvent, mev.targetNode(), true, m_clickCount, mouseEvent, false);1665 1666 bool swallowClickEvent = m_clickCount > 0 && mouseEvent.button() != RightButton && mev.targetNode() == m_clickNode && dispatchMouseEvent(eventNames().clickEvent, mev.targetNode(), true, m_clickCount, mouseEvent, true);1683 bool swallowMouseUpEvent = dispatchMouseEvent(eventNames().mouseupEvent, targetNode(mev), true, m_clickCount, mouseEvent, false); 1684 1685 bool swallowClickEvent = m_clickCount > 0 && mouseEvent.button() != RightButton && targetNode(mev) == m_clickNode && dispatchMouseEvent(eventNames().clickEvent, targetNode(mev), true, m_clickCount, mouseEvent, true); 1667 1686 1668 1687 if (m_resizeLayer) { … … 1741 1760 1742 1761 // Drag events should never go to text nodes (following IE, and proper mouseover/out dispatch) 1743 Node* newTarget = mev.targetNode();1762 Node* newTarget = targetNode(mev); 1744 1763 if (newTarget && newTarget->isTextNode()) 1745 1764 newTarget = newTarget->parentNode(); … … 2151 2170 // If the selection is non-editable, we do word selection to make it easier to use the contextual menu items 2152 2171 // available for text selections. But only if we're above text. 2153 && (m_frame->selection()->isContentEditable() || ( mev.targetNode() && mev.targetNode()->isTextNode()))) {2172 && (m_frame->selection()->isContentEditable() || (targetNode(mev) && targetNode(mev)->isTextNode()))) { 2154 2173 m_mouseDownMayStartSelect = true; // context menu events are always allowed to perform a selection 2155 2174 selectClosestWordOrLinkFromMouseEvent(mev); 2156 2175 } 2157 2176 2158 swallowEvent = dispatchMouseEvent(eventNames().contextmenuEvent, mev.targetNode(), true, 0, event, false);2177 swallowEvent = dispatchMouseEvent(eventNames().contextmenuEvent, targetNode(mev), true, 0, event, false); 2159 2178 2160 2179 return swallowEvent; -
trunk/Source/WebCore/page/EventHandler.h
r81835 r83153 144 144 145 145 static Frame* subframeForTargetNode(Node*); 146 static Frame* subframeForHitTestResult(const MouseEventWithHitTestResults&); 146 147 147 148 bool scrollOverflow(ScrollDirection, ScrollGranularity, Node* startingNode = 0); … … 262 263 PassRefPtr<Clipboard> createDraggingClipboard() const; 263 264 #endif // ENABLE(DRAG_SUPPORT) 264 265 265 266 bool eventActivatedView(const PlatformMouseEvent&) const; 266 267 void selectClosestWordFromMouseEvent(const MouseEventWithHitTestResults&); … … 268 269 269 270 bool handleMouseDoubleClickEvent(const PlatformMouseEvent&); 271 272 static Node* targetNode(const MouseEventWithHitTestResults&); 273 static Node* targetNode(const HitTestResult&); 270 274 271 275 bool handleMousePressEvent(const MouseEventWithHitTestResults&); -
trunk/Source/WebCore/page/MouseEventWithHitTestResults.cpp
r39456 r83153 33 33 { 34 34 } 35 36 Node* MouseEventWithHitTestResults::targetNode() const37 {38 Node* node = m_hitTestResult.innerNode();39 if (!node)40 return 0;41 if (node->inDocument())42 return node;43 44 Element* element = node->parentElement();45 if (element && element->inDocument())46 return element;47 48 return node;49 }50 35 51 36 const IntPoint MouseEventWithHitTestResults::localPoint() const -
trunk/Source/WebCore/page/MouseEventWithHitTestResults.h
r50583 r83153 35 35 const PlatformMouseEvent& event() const { return m_event; } 36 36 const HitTestResult& hitTestResult() const { return m_hitTestResult; } 37 Node* targetNode() const;38 37 const IntPoint localPoint() const; 39 38 Scrollbar* scrollbar() const; -
trunk/Source/WebCore/page/android/EventHandlerAndroid.cpp
r80172 r83153 54 54 { 55 55 // Figure out which view to send the event to. 56 RenderObject* target = event.targetNode() ? event.targetNode()->renderer() : 0;56 RenderObject* target = targetNode(event) ? targetNode(event)->renderer() : 0; 57 57 if (!target || !target->isWidget()) 58 58 return false; -
trunk/Source/WebCore/page/brew/EventHandlerBrew.cpp
r80172 r83153 60 60 { 61 61 // Figure out which view to send the event to. 62 RenderObject* target = event.targetNode() ? event.targetNode()->renderer() : 0;62 RenderObject* target = targetNode(event) ? targetNode(event)->renderer() : 0; 63 63 if (!target || !target->isWidget()) 64 64 return false; -
trunk/Source/WebCore/page/chromium/EventHandlerChromium.cpp
r80185 r83153 62 62 if (m_frame->selection()->contains(p)) { 63 63 VisiblePosition visiblePos( 64 mev.targetNode()->renderer()->positionForPoint(mev.localPoint()));64 targetNode(mev)->renderer()->positionForPoint(mev.localPoint())); 65 65 VisibleSelection newSelection(visiblePos); 66 66 if (m_frame->selection()->shouldChangeSelection(newSelection)) … … 104 104 { 105 105 // Figure out which view to send the event to. 106 if (! event.targetNode() || !event.targetNode()->renderer() || !event.targetNode()->renderer()->isWidget())106 if (!targetNode(event) || !targetNode(event)->renderer() || !targetNode(event)->renderer()->isWidget()) 107 107 return false; 108 return passMouseDownEventToWidget(toRenderWidget( event.targetNode()->renderer())->widget());108 return passMouseDownEventToWidget(toRenderWidget(targetNode(event)->renderer())->widget()); 109 109 } 110 110 -
trunk/Source/WebCore/page/efl/EventHandlerEfl.cpp
r80172 r83153 62 62 bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults& event) 63 63 { 64 RenderObject* target = event.targetNode() ? event.targetNode()->renderer() : 0;64 RenderObject* target = targetNode(event) ? targetNode(event)->renderer() : 0; 65 65 66 66 if (!target || !target->isWidget()) -
trunk/Source/WebCore/page/gtk/EventHandlerGtk.cpp
r80172 r83153 60 60 { 61 61 // Figure out which view to send the event to. 62 RenderObject* target = event.targetNode() ? event.targetNode()->renderer() : 0;62 RenderObject* target = targetNode(event) ? targetNode(event)->renderer() : 0; 63 63 if (!target || !target->isWidget()) 64 64 return false; -
trunk/Source/WebCore/page/haiku/EventHandlerHaiku.cpp
r80172 r83153 74 74 { 75 75 // Figure out which view to send the event to. 76 RenderObject* target = event.targetNode() ? event.targetNode()->renderer() : 0;76 RenderObject* target = targetNode(event) ? targetNode(event)->renderer() : 0; 77 77 if (!target || !target->isWidget()) 78 78 return false; -
trunk/Source/WebCore/page/mac/EventHandlerMac.mm
r82709 r83153 169 169 { 170 170 // Figure out which view to send the event to. 171 RenderObject* target = event.targetNode() ? event.targetNode()->renderer() : 0;171 RenderObject* target = targetNode(event) ? targetNode(event)->renderer() : 0; 172 172 if (!target || !target->isWidget()) 173 173 return false; … … 382 382 383 383 case NSLeftMouseDown: { 384 Node* node = event.targetNode();384 Node* node = targetNode(event); 385 385 if (!node) 386 386 return false; -
trunk/Source/WebCore/page/wx/EventHandlerWx.cpp
r80172 r83153 64 64 { 65 65 // Figure out which view to send the event to. 66 if (! event.targetNode() || !event.targetNode()->renderer() || !event.targetNode()->renderer()->isWidget())66 if (!targetNode(event) || !targetNode(event)->renderer() || !targetNode(event)->renderer()->isWidget()) 67 67 return false; 68 68 69 return passMouseDownEventToWidget(toRenderWidget( event.targetNode()->renderer())->widget());69 return passMouseDownEventToWidget(toRenderWidget(targetNode(event)->renderer())->widget()); 70 70 } 71 71 -
trunk/Source/WebKit/gtk/ChangeLog
r82962 r83153 1 2011-04-07 Alice Boxhall <aboxhall@chromium.org> 2 3 Reviewed by Ryosuke Niwa. 4 5 Move the MouseEventWithHitTestResults::targetNode() method on to EventHandler. 6 https://bugs.webkit.org/show_bug.cgi?id=57921 7 8 * webkit/webkitwebview.cpp: 9 (webkit_web_view_forward_context_menu_event): 10 Call subframeForHitTestResult rather than subframeForTargetNode as the targetNode() 11 method has moved on to EventHandler. 12 1 13 2011-04-05 Martin Robinson <mrobinson@igalia.com> 2 14 -
trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp
r82962 r83153 320 320 MouseEventWithHitTestResults mev = mainFrame->document()->prepareMouseEvent(request, point, event); 321 321 322 Frame* targetFrame = EventHandler::subframeFor TargetNode(mev.targetNode());322 Frame* targetFrame = EventHandler::subframeForHitTestResult(mev); 323 323 if (!targetFrame) 324 324 targetFrame = mainFrame;
Note: See TracChangeset
for help on using the changeset viewer.