Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: third_party/WebKit/Source/core/input/EventHandler.cpp

Issue 2174863002: Change mouse pointer event targets to the capturing node (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Variable name change Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed.
3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies)
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 1386 matching lines...) Expand 10 before | Expand all | Expand 10 after
1397 { 1397 {
1398 ASSERT(m_frame); 1398 ASSERT(m_frame);
1399 ASSERT(m_frame->document()); 1399 ASSERT(m_frame->document());
1400 1400
1401 return m_frame->document()->prepareMouseEvent(request, contentPointFromRootF rame(m_frame, mev.position()), mev); 1401 return m_frame->document()->prepareMouseEvent(request, contentPointFromRootF rame(m_frame, mev.position()), mev);
1402 } 1402 }
1403 1403
1404 Node* EventHandler::updateMouseEventTargetNode(Node* targetNode, 1404 Node* EventHandler::updateMouseEventTargetNode(Node* targetNode,
1405 const PlatformMouseEvent& mouseEvent) 1405 const PlatformMouseEvent& mouseEvent)
1406 { 1406 {
1407 Node* result = targetNode; 1407 Node* newNodeUnderMouse = targetNode;
1408 1408
1409 // If we're capturing, we always go right to that node. 1409 // If we're capturing, we always go right to that node.
1410 if (m_capturingMouseEventsNode) { 1410 if (EventTarget* mousePointerCapturingNode = m_pointerEventManager.getMouseC apturingNode()) {
1411 result = m_capturingMouseEventsNode.get(); 1411 newNodeUnderMouse = mousePointerCapturingNode->toNode();
1412 DCHECK(newNodeUnderMouse);
1413 } else if (m_capturingMouseEventsNode) {
1414 newNodeUnderMouse = m_capturingMouseEventsNode.get();
1412 } else { 1415 } else {
1413 // If the target node is a text node, dispatch on the parent node - rdar ://4196646 1416 // If the target node is a text node, dispatch on the parent node - rdar ://4196646
1414 if (result && result->isTextNode()) 1417 if (newNodeUnderMouse && newNodeUnderMouse->isTextNode())
1415 result = FlatTreeTraversal::parent(*result); 1418 newNodeUnderMouse = FlatTreeTraversal::parent(*newNodeUnderMouse);
1416 } 1419 }
1417 Node* lastNodeUnderMouse = m_nodeUnderMouse; 1420 Node* lastNodeUnderMouse = m_nodeUnderMouse;
1418 m_nodeUnderMouse = result; 1421 m_nodeUnderMouse = newNodeUnderMouse;
1419 1422
1420 PaintLayer* layerForLastNode = layerForNode(lastNodeUnderMouse); 1423 PaintLayer* layerForLastNode = layerForNode(lastNodeUnderMouse);
1421 PaintLayer* layerForNodeUnderMouse = layerForNode(m_nodeUnderMouse.get()); 1424 PaintLayer* layerForNodeUnderMouse = layerForNode(m_nodeUnderMouse.get());
1422 Page* page = m_frame->page(); 1425 Page* page = m_frame->page();
1423 1426
1424 if (lastNodeUnderMouse && (!m_nodeUnderMouse || m_nodeUnderMouse->document() != m_frame->document())) { 1427 if (lastNodeUnderMouse && (!m_nodeUnderMouse || m_nodeUnderMouse->document() != m_frame->document())) {
1425 // The mouse has moved between frames. 1428 // The mouse has moved between frames.
1426 if (LocalFrame* frame = lastNodeUnderMouse->document().frame()) { 1429 if (LocalFrame* frame = lastNodeUnderMouse->document().frame()) {
1427 if (FrameView* frameView = frame->view()) 1430 if (FrameView* frameView = frame->view())
1428 frameView->mouseExitedContentArea(); 1431 frameView->mouseExitedContentArea();
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1498 { 1501 {
1499 ASSERT(mouseEventType == EventTypeNames::mousedown 1502 ASSERT(mouseEventType == EventTypeNames::mousedown
1500 || mouseEventType == EventTypeNames::mousemove 1503 || mouseEventType == EventTypeNames::mousemove
1501 || mouseEventType == EventTypeNames::mouseup); 1504 || mouseEventType == EventTypeNames::mouseup);
1502 1505
1503 Node* lastNodeUnderMouse = updateMouseEventTargetNode(targetNode, mouseEvent ); 1506 Node* lastNodeUnderMouse = updateMouseEventTargetNode(targetNode, mouseEvent );
1504 1507
1505 if (mouseEvent.getSyntheticEventType() == PlatformMouseEvent::FromTouch) 1508 if (mouseEvent.getSyntheticEventType() == PlatformMouseEvent::FromTouch)
1506 return dispatchMouseEvent(mouseEventType, m_nodeUnderMouse, clickCount, mouseEvent); 1509 return dispatchMouseEvent(mouseEventType, m_nodeUnderMouse, clickCount, mouseEvent);
1507 1510
1508 return m_pointerEventManager.sendMousePointerEvent( 1511 Node* newNodeUnderMouse = nullptr;
1512 const auto& eventResult = m_pointerEventManager.sendMousePointerEvent(
1509 m_nodeUnderMouse, mouseEventType, clickCount, mouseEvent, nullptr, 1513 m_nodeUnderMouse, mouseEventType, clickCount, mouseEvent, nullptr,
1510 lastNodeUnderMouse); 1514 lastNodeUnderMouse, &newNodeUnderMouse);
1515 m_nodeUnderMouse = newNodeUnderMouse;
1516 return eventResult;
1511 } 1517 }
1512 1518
1513 void EventHandler::setClickNode(Node* node) 1519 void EventHandler::setClickNode(Node* node)
1514 { 1520 {
1515 m_clickNode = node; 1521 m_clickNode = node;
1516 } 1522 }
1517 1523
1518 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities) 1524 WebInputEventResult EventHandler::handleMouseFocus(const MouseEventWithHitTestRe sults& targetedEvent, InputDeviceCapabilities* sourceCapabilities)
1519 { 1525 {
1520 // If clicking on a frame scrollbar, do not mess up with content focus. 1526 // If clicking on a frame scrollbar, do not mess up with content focus.
(...skipping 1060 matching lines...) Expand 10 before | Expand all | Expand 10 after
2581 2587
2582 FrameHost* EventHandler::frameHost() const 2588 FrameHost* EventHandler::frameHost() const
2583 { 2589 {
2584 if (!m_frame->page()) 2590 if (!m_frame->page())
2585 return nullptr; 2591 return nullptr;
2586 2592
2587 return &m_frame->page()->frameHost(); 2593 return &m_frame->page()->frameHost();
2588 } 2594 }
2589 2595
2590 } // namespace blink 2596 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698