diff --git a/components/script/dom/eventdispatcher.rs b/components/script/dom/eventdispatcher.rs index 50249e405f5..918763f884e 100644 --- a/components/script/dom/eventdispatcher.rs +++ b/components/script/dom/eventdispatcher.rs @@ -106,24 +106,25 @@ fn dispatch_to_listeners(event: &Event, target: &EventTarget, chain: &[&EventTar assert!(!event.stop_immediate()); /* bubbling */ - if event.bubbles() { - event.set_phase(EventPhase::Bubbling); + if !event.bubbles() { + return; + } - for cur_target in chain { - if let Some(listeners) = cur_target.get_listeners_for(&type_, ListenerPhase::Bubbling) { - event.set_current_target(cur_target); - for listener in &listeners { - handle_event(window.r(), listener, *cur_target, event); + event.set_phase(EventPhase::Bubbling); + for cur_target in chain { + if let Some(listeners) = cur_target.get_listeners_for(&type_, ListenerPhase::Bubbling) { + event.set_current_target(cur_target); + for listener in &listeners { + handle_event(window.r(), listener, *cur_target, event); - if event.stop_immediate() { - return; - } - } - - if event.stop_propagation() { + if event.stop_immediate() { return; } } + + if event.stop_propagation() { + return; + } } } }