aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-04-26 12:08:29 +0200
committerMs2ger <ms2ger@gmail.com>2014-04-28 23:06:26 +0200
commit558986c87e7e23b0f0e157b43add6cf6407c3232 (patch)
tree2155c58fb0c42b25eee8bba993787df781e7763a /src
parent39ad37d8b6b69730119a73f0461d8b4c888e91da (diff)
downloadservo-558986c87e7e23b0f0e157b43add6cf6407c3232.tar.gz
servo-558986c87e7e23b0f0e157b43add6cf6407c3232.zip
Make chain in eventdispatcher.rs use Vec.
Diffstat (limited to 'src')
-rw-r--r--src/components/script/dom/eventdispatcher.rs15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/components/script/dom/eventdispatcher.rs b/src/components/script/dom/eventdispatcher.rs
index 28313c901e5..d298ab38492 100644
--- a/src/components/script/dom/eventdispatcher.rs
+++ b/src/components/script/dom/eventdispatcher.rs
@@ -24,23 +24,24 @@ pub fn dispatch_event(target: &JS<EventTarget>,
}
let type_ = event.get().type_.clone();
- let mut chain = ~[];
//TODO: no chain if not participating in a tree
- if target.get().is_node() {
+ let chain: Vec<JS<EventTarget>> = if target.get().is_node() {
let target_node: JS<Node> = NodeCast::to(target).unwrap();
- for ancestor in target_node.ancestors() {
+ target_node.ancestors().map(|ancestor| {
let ancestor_target: JS<EventTarget> = EventTargetCast::from(&ancestor);
- chain.push(ancestor_target);
- }
- }
+ ancestor_target
+ }).collect()
+ } else {
+ vec!()
+ };
event.get_mut().phase = PhaseCapturing;
//FIXME: The "callback this value" should be currentTarget
/* capturing */
- for cur_target in chain.rev_iter() {
+ for cur_target in chain.as_slice().rev_iter() {
let stopped = match cur_target.get().get_listeners_for(type_, Capturing) {
Some(listeners) => {
event.get_mut().current_target = Some(cur_target.clone());