diff options
-rw-r--r-- | src/components/script/dom/eventdispatcher.rs | 8 | ||||
-rw-r--r-- | src/components/script/dom/eventtarget.rs | 4 |
2 files changed, 5 insertions, 7 deletions
diff --git a/src/components/script/dom/eventdispatcher.rs b/src/components/script/dom/eventdispatcher.rs index ba8e06795f5..2c3ccc0da32 100644 --- a/src/components/script/dom/eventdispatcher.rs +++ b/src/components/script/dom/eventdispatcher.rs @@ -34,8 +34,7 @@ pub fn dispatch_event(target: AbstractEventTarget, event: AbstractEvent) -> bool /* capturing */ for &cur_target in chain.rev_iter() { - //XXX bad clone - let stopped = match cur_target.eventtarget().get_listeners_for(type_.clone(), Capturing) { + let stopped = match cur_target.eventtarget().get_listeners_for(type_, Capturing) { Some(listeners) => { event.mut_event().current_target = Some(cur_target); for listener in listeners.iter() { @@ -64,7 +63,7 @@ pub fn dispatch_event(target: AbstractEventTarget, event: AbstractEvent) -> bool event.current_target = Some(target); } - let opt_listeners = target.eventtarget().get_listeners(type_.clone()); + let opt_listeners = target.eventtarget().get_listeners(type_); for listeners in opt_listeners.iter() { for listener in listeners.iter() { listener.HandleEvent__(event, eReportExceptions); @@ -80,8 +79,7 @@ pub fn dispatch_event(target: AbstractEventTarget, event: AbstractEvent) -> bool event.mut_event().phase = Phase_Bubbling; for &cur_target in chain.iter() { - //XXX bad clone - let stopped = match cur_target.eventtarget().get_listeners_for(type_.clone(), Bubbling) { + let stopped = match cur_target.eventtarget().get_listeners_for(type_, Bubbling) { Some(listeners) => { event.mut_event().current_target = Some(cur_target); for listener in listeners.iter() { diff --git a/src/components/script/dom/eventtarget.rs b/src/components/script/dom/eventtarget.rs index 26df47ef585..ae87a5d73ac 100644 --- a/src/components/script/dom/eventtarget.rs +++ b/src/components/script/dom/eventtarget.rs @@ -112,13 +112,13 @@ impl EventTarget { } } - pub fn get_listeners(&self, type_: ~str) -> Option<~[EventListener]> { + pub fn get_listeners(&self, type_: &str) -> Option<~[EventListener]> { do self.handlers.find_equiv(&type_).map |listeners| { listeners.iter().map(|entry| entry.listener).collect() } } - pub fn get_listeners_for(&self, type_: ~str, desired_phase: ListenerPhase) + pub fn get_listeners_for(&self, type_: &str, desired_phase: ListenerPhase) -> Option<~[EventListener]> { do self.handlers.find_equiv(&type_).map |listeners| { let filtered = listeners.iter().filter(|entry| entry.phase == desired_phase); |