aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/eventdispatcher.rs54
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;
}
}
}