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

Unified Diff: Source/core/input/EventHandler.cpp

Issue 1288483003: Skipping mouseenter/over/out/leave on deleted nodes. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « LayoutTests/fast/events/mouse-events-on-node-deletion-expected.txt ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/input/EventHandler.cpp
diff --git a/Source/core/input/EventHandler.cpp b/Source/core/input/EventHandler.cpp
index c66e5f02b6f1e0f58f7b3f1b30dacd77b3fc7a9b..c91483f2906b449b09eb22d43beb0b5db80f9aca 100644
--- a/Source/core/input/EventHandler.cpp
+++ b/Source/core/input/EventHandler.cpp
@@ -1526,7 +1526,7 @@ void EventHandler::sendMouseEventsForNodeTransition(Node* exitedNode, Node* ente
ASSERT(exitedNode != enteredNode);
// First, dispatch mouseout event (which bubbles to ancestors)
- if (exitedNode)
+ if (exitedNode && exitedNode->inDocument())
dtapuska 2015/08/14 17:20:09 Can we just make an anonymous scope function to ch
mustaq 2015/08/14 21:00:15 Done.
exitedNode->dispatchMouseEvent(mouseEvent, EventTypeNames::mouseout, 0, enteredNode);
// A note on mouseenter and mouseleave: These are non-bubbling events, and they are dispatched if there
@@ -1546,13 +1546,13 @@ void EventHandler::sendMouseEventsForNodeTransition(Node* exitedNode, Node* ente
// Create lists of all exited/entered ancestors.
WillBeHeapVector<RefPtrWillBeMember<Node>, 32> exitedAncestors;
WillBeHeapVector<RefPtrWillBeMember<Node>, 32> enteredAncestors;
- if (exitedNode) {
+ if (exitedNode && exitedNode->inDocument()) {
exitedNode->updateDistribution();
for (Node* node = exitedNode; node; node = ComposedTreeTraversal::parent(*node)) {
exitedAncestors.append(node);
}
}
- if (enteredNode) {
+ if (enteredNode && enteredNode->inDocument()) {
enteredNode->updateDistribution();
for (Node* node = enteredNode; node; node = ComposedTreeTraversal::parent(*node)) {
enteredAncestors.append(node);
@@ -1591,7 +1591,7 @@ void EventHandler::sendMouseEventsForNodeTransition(Node* exitedNode, Node* ente
}
// Dispatch mouseover event (which bubbles to ancestors) after the mouseleave events are sent.
- if (enteredNode)
+ if (enteredNode && enteredNode->inDocument())
enteredNode->dispatchMouseEvent(mouseEvent, EventTypeNames::mouseover, 0, exitedNode);
// Determine if there is a capturing mouseenter listener in an ancestor. This must be done /after/ dispatching the
« no previous file with comments | « LayoutTests/fast/events/mouse-events-on-node-deletion-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698