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

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 216a6ed138bdce0c360acc2f82e08c577ce83e99..55d898cd3735975be9de986d5fae5b206df785c1 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());
@@ -693,24 +693,8 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e
if (event.event().button() != LeftButton || !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);
@@ -1665,6 +1649,22 @@ bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& mouseEvent, Hi
return true;
swallowEvent = !dispatchMouseEvent(eventNames().mousemoveEvent, mev.targetNode(), false, 0, mouseEvent, true);
+
+ RenderObject* renderer = targetNode->renderer();
+ if (!renderer) {
+ Node* parent = EventPathWalker::parent(targetNode);
+ if (!parent)
+ return false;
+
+ renderer = parent->renderer();
+ if (!renderer || !renderer->isListBox())
+ return false;
+ }
+
+ if (m_mouseDownMayStartAutoscroll && !panScrollInProgress()) {
+ m_autoscrollController->startAutoscrollForSelection(renderer);
+ m_mouseDownMayStartAutoscroll = false;
+ }
if (!swallowEvent)
swallowEvent = handleMouseDraggedEvent(mev);
@@ -1996,7 +1996,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