From a85196398da7d6328163f0b5b7d35f6fef5f5499 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Wed, 16 Sep 2015 13:47:31 +0200 Subject: [PATCH] Return immediately from dispatch_to_listeners if propagation is stopped. --- components/script/dom/eventdispatcher.rs | 25 +++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/components/script/dom/eventdispatcher.rs b/components/script/dom/eventdispatcher.rs index 6ac2d38e976..3b54aaccf28 100644 --- a/components/script/dom/eventdispatcher.rs +++ b/components/script/dom/eventdispatcher.rs @@ -28,18 +28,18 @@ fn dispatch_to_listeners(event: &Event, target: &EventTarget, chain: &[&EventTar listener.call_or_handle_event(*cur_target, event, Report); if event.stop_immediate() { - break; + return; } } if event.stop_propagation() { - break; + return; } } } - if event.stop_propagation() { - return; - } + + assert!(!event.stop_propagation()); + assert!(!event.stop_immediate()); /* at target */ event.set_phase(EventPhase::AtTarget); @@ -51,13 +51,16 @@ fn dispatch_to_listeners(event: &Event, target: &EventTarget, chain: &[&EventTar listener.call_or_handle_event(target, event, Report); if event.stop_immediate() { - break; + return; } } + if event.stop_propagation() { + return; + } } - if event.stop_propagation() { - return; - } + + assert!(!event.stop_propagation()); + assert!(!event.stop_immediate()); /* bubbling */ if event.bubbles() { @@ -71,12 +74,12 @@ fn dispatch_to_listeners(event: &Event, target: &EventTarget, chain: &[&EventTar listener.call_or_handle_event(*cur_target, event, Report); if event.stop_immediate() { - break; + return; } } if event.stop_propagation() { - break; + return; } } }