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

Unified Diff: Source/WebCore/page/EventHandler.cpp

Issue 14096013: Implement select element list box with shadow DOM. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@shadowselect
Patch Set: Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: Source/WebCore/page/EventHandler.cpp
diff --git a/Source/WebCore/page/EventHandler.cpp b/Source/WebCore/page/EventHandler.cpp
index 4266cc9f26bce10c403831123a6c6d22ffa8d554..cf48b3bff382d15d6d2826f608b71758355aa62d 100644
--- a/Source/WebCore/page/EventHandler.cpp
+++ b/Source/WebCore/page/EventHandler.cpp
@@ -674,7 +674,7 @@ bool EventHandler::handleMousePressEvent(const MouseEventWithHitTestResults& eve
swallowEvent = handleMousePressEventTripleClick(event);
else
swallowEvent = handleMousePressEventSingleClick(event);
-
+
m_mouseDownMayStartAutoscroll = m_mouseDownMayStartSelect
|| (m_mousePressNode && m_mousePressNode->renderBox() && m_mousePressNode->renderBox()->canBeProgramaticallyScrolled());
@@ -689,28 +689,11 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e
if (handleDrag(event, ShouldCheckDragHysteresis))
return true;
- Node* targetNode = event.targetNode();
- if (event.event().button() != LeftButton || !targetNode)
+ if (event.event().button() != LeftButton || !event.targetNode())
return false;
- RenderObject* renderer = targetNode->renderer();
- if (!renderer) {
- Node* parent = EventPathWalker::parent(targetNode);
- if (!parent)
- return false;
-
- renderer = parent->renderer();
- if (!renderer || !renderer->isListBox())
- return false;
- }
-
m_mouseDownMayStartDrag = false;
- if (m_mouseDownMayStartAutoscroll && !panScrollInProgress()) {
- m_autoscrollController->startAutoscrollForSelection(renderer);
- m_mouseDownMayStartAutoscroll = false;
- }
-
if (m_selectionInitiationState != ExtendedSelection) {
HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::DisallowShadowContent);
HitTestResult result(m_mouseDownPos);
@@ -1641,9 +1624,11 @@ bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& mouseEvent, Hi
if (m_lastMouseMoveEventSubframe && m_lastMouseMoveEventSubframe->tree()->isDescendantOf(m_frame) && m_lastMouseMoveEventSubframe != newSubframe)
passMouseMoveEventToSubframe(mev, m_lastMouseMoveEventSubframe.get());
+ Node* targetNode = mev.targetNode();
+
if (newSubframe) {
// Update over/out state before passing the event to the subframe.
- updateMouseEventTargetNode(mev.targetNode(), mouseEvent, true);
+ updateMouseEventTargetNode(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.
@@ -1666,7 +1651,15 @@ bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& mouseEvent, Hi
if (swallowEvent)
return true;
- swallowEvent = !dispatchMouseEvent(eventNames().mousemoveEvent, mev.targetNode(), false, 0, mouseEvent, true);
+ swallowEvent = !dispatchMouseEvent(eventNames().mousemoveEvent, targetNode, false, 0, mouseEvent, true);
+
+ RenderObject* renderer = targetNode ? targetNode->renderer() : 0;
+
+ if (renderer && m_mouseDownMayStartAutoscroll && !panScrollInProgress()) {
+ m_autoscrollController->startAutoscrollForSelection(renderer);
+ m_mouseDownMayStartAutoscroll = false;
+ }
+
if (!swallowEvent)
swallowEvent = handleMouseDraggedEvent(mev);
@@ -1998,7 +1991,7 @@ MouseEventWithHitTestResults EventHandler::prepareMouseEvent(const HitTestReques
{
ASSERT(m_frame);
ASSERT(m_frame->document());
-
+
return m_frame->document()->prepareMouseEvent(request, documentPointForWindowPoint(m_frame, mev.position()), mev);
}

Powered by Google App Engine
This is Rietveld 408576698