diff options
-rw-r--r-- | components/script/dom/eventdispatcher.rs | 54 |
1 files changed, 22 insertions, 32 deletions
diff --git a/components/script/dom/eventdispatcher.rs b/components/script/dom/eventdispatcher.rs index 13ccf5be4b9..51617a49a2d 100644 --- a/components/script/dom/eventdispatcher.rs +++ b/components/script/dom/eventdispatcher.rs @@ -21,25 +21,20 @@ fn dispatch_to_listeners(event: &Event, target: &EventTarget, chain: &[&EventTar /* capturing */ event.set_phase(EventPhase::Capturing); for cur_target in chain.iter().rev() { - let stopped = match cur_target.get_listeners_for(&type_, ListenerPhase::Capturing) { - Some(listeners) => { - event.set_current_target(cur_target); - for listener in &listeners { - // Explicitly drop any exception on the floor. - listener.call_or_handle_event(*cur_target, event, Report); + if let Some(listeners) = cur_target.get_listeners_for(&type_, ListenerPhase::Capturing) { + event.set_current_target(cur_target); + for listener in &listeners { + // Explicitly drop any exception on the floor. + listener.call_or_handle_event(*cur_target, event, Report); - if event.stop_immediate() { - break; - } + if event.stop_immediate() { + break; } - - event.stop_propagation() } - None => false - }; - if stopped { - break; + if event.stop_propagation() { + break; + } } } @@ -48,8 +43,7 @@ fn dispatch_to_listeners(event: &Event, target: &EventTarget, chain: &[&EventTar event.set_phase(EventPhase::AtTarget); event.set_current_target(target.clone()); - let opt_listeners = target.get_listeners(&type_); - for listeners in opt_listeners { + if let Some(listeners) = target.get_listeners(&type_) { for listener in listeners { // Explicitly drop any exception on the floor. listener.call_or_handle_event(target, event, Report); @@ -66,24 +60,20 @@ fn dispatch_to_listeners(event: &Event, target: &EventTarget, chain: &[&EventTar event.set_phase(EventPhase::Bubbling); for cur_target in chain { - let stopped = match cur_target.get_listeners_for(&type_, ListenerPhase::Bubbling) { - Some(listeners) => { - event.set_current_target(cur_target); - for listener in &listeners { - // Explicitly drop any exception on the floor. - listener.call_or_handle_event(*cur_target, event, Report); - - if event.stop_immediate() { - break; - } + if let Some(listeners) = cur_target.get_listeners_for(&type_, ListenerPhase::Bubbling) { + event.set_current_target(cur_target); + for listener in &listeners { + // Explicitly drop any exception on the floor. + listener.call_or_handle_event(*cur_target, event, Report); + + if event.stop_immediate() { + break; } + } - event.stop_propagation() + if event.stop_propagation() { + break; } - None => false - }; - if stopped { - break; } } } |