OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights |
3 * reserved. | 3 * reserved. |
4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) |
6 * | 6 * |
7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
9 * are met: | 9 * are met: |
10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
(...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1175 newNodeUnderMouse = m_capturingMouseEventsNode.get(); | 1175 newNodeUnderMouse = m_capturingMouseEventsNode.get(); |
1176 } else { | 1176 } else { |
1177 // If the target node is a text node, dispatch on the parent node - | 1177 // If the target node is a text node, dispatch on the parent node - |
1178 // rdar://4196646 | 1178 // rdar://4196646 |
1179 if (newNodeUnderMouse && newNodeUnderMouse->isTextNode()) | 1179 if (newNodeUnderMouse && newNodeUnderMouse->isTextNode()) |
1180 newNodeUnderMouse = FlatTreeTraversal::parent(*newNodeUnderMouse); | 1180 newNodeUnderMouse = FlatTreeTraversal::parent(*newNodeUnderMouse); |
1181 } | 1181 } |
1182 return newNodeUnderMouse; | 1182 return newNodeUnderMouse; |
1183 } | 1183 } |
1184 | 1184 |
1185 bool EventHandler::isPointerEventActiveOnFrame(int pointerId, | |
mustaq
2016/10/13 19:55:38
Nit: s/Event/Id/ in these predicates.
Navid Zolghadr
2016/10/14 14:50:28
Done.
| |
1186 LocalFrame* frame) const { | |
1187 DCHECK_EQ(m_frame, m_frame->localFrameRoot()); | |
1188 return m_pointerEventManager->isPointerEventActiveOnFrame(pointerId, frame); | |
1189 } | |
1190 | |
1191 bool EventHandler::IsPointerActiveInRootFrame(int pointerId) const { | |
1192 return m_frame != m_frame->localFrameRoot() && | |
1193 m_frame->localFrameRoot()->eventHandler().isPointerEventActiveOnFrame( | |
1194 pointerId, m_frame); | |
1195 } | |
1196 | |
1185 bool EventHandler::isPointerEventActive(int pointerId) { | 1197 bool EventHandler::isPointerEventActive(int pointerId) { |
1186 return m_pointerEventManager->isActive(pointerId); | 1198 return m_pointerEventManager->isActive(pointerId) || |
1199 m_frame->localFrameRoot()->eventHandler().isPointerEventActiveOnFrame( | |
1200 pointerId, m_frame); | |
1187 } | 1201 } |
1188 | 1202 |
1189 void EventHandler::setPointerCapture(int pointerId, EventTarget* target) { | 1203 void EventHandler::setPointerCapture(int pointerId, EventTarget* target) { |
1190 // TODO(crbug.com/591387): This functionality should be per page not per | 1204 // TODO(crbug.com/591387): This functionality should be per page not per |
1191 // frame. | 1205 // frame. |
1192 m_pointerEventManager->setPointerCapture(pointerId, target); | 1206 if (IsPointerActiveInRootFrame(pointerId)) { |
1207 m_frame->localFrameRoot()->eventHandler().setPointerCapture(pointerId, | |
1208 target); | |
1209 } else { | |
1210 m_pointerEventManager->setPointerCapture(pointerId, target); | |
1211 } | |
1193 } | 1212 } |
1194 | 1213 |
1195 void EventHandler::releasePointerCapture(int pointerId, EventTarget* target) { | 1214 void EventHandler::releasePointerCapture(int pointerId, EventTarget* target) { |
1196 m_pointerEventManager->releasePointerCapture(pointerId, target); | 1215 if (IsPointerActiveInRootFrame(pointerId)) { |
1216 m_frame->localFrameRoot()->eventHandler().releasePointerCapture(pointerId, | |
1217 target); | |
1218 } else { | |
1219 m_pointerEventManager->releasePointerCapture(pointerId, target); | |
1220 } | |
1197 } | 1221 } |
1198 | 1222 |
1199 bool EventHandler::hasPointerCapture(int pointerId, | 1223 bool EventHandler::hasPointerCapture(int pointerId, |
1200 const EventTarget* target) const { | 1224 const EventTarget* target) const { |
1201 return m_pointerEventManager->hasPointerCapture(pointerId, target); | 1225 if (IsPointerActiveInRootFrame(pointerId)) { |
1226 return m_frame->localFrameRoot()->eventHandler().hasPointerCapture( | |
1227 pointerId, target); | |
1228 } else { | |
1229 return m_pointerEventManager->hasPointerCapture(pointerId, target); | |
1230 } | |
1202 } | 1231 } |
1203 | 1232 |
1204 bool EventHandler::hasProcessedPointerCapture(int pointerId, | 1233 bool EventHandler::hasProcessedPointerCapture(int pointerId, |
1205 const EventTarget* target) const { | 1234 const EventTarget* target) const { |
1206 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); | 1235 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); |
1207 } | 1236 } |
1208 | 1237 |
1209 void EventHandler::elementRemoved(EventTarget* target) { | 1238 void EventHandler::elementRemoved(EventTarget* target) { |
1210 m_pointerEventManager->elementRemoved(target); | 1239 m_pointerEventManager->elementRemoved(target); |
1211 } | 1240 } |
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2050 } | 2079 } |
2051 | 2080 |
2052 FrameHost* EventHandler::frameHost() const { | 2081 FrameHost* EventHandler::frameHost() const { |
2053 if (!m_frame->page()) | 2082 if (!m_frame->page()) |
2054 return nullptr; | 2083 return nullptr; |
2055 | 2084 |
2056 return &m_frame->page()->frameHost(); | 2085 return &m_frame->page()->frameHost(); |
2057 } | 2086 } |
2058 | 2087 |
2059 } // namespace blink | 2088 } // namespace blink |
OLD | NEW |