diff options
author | Tetsuharu OHZEKI <saneyuki.snyk@gmail.com> | 2014-04-23 14:12:55 +0900 |
---|---|---|
committer | Tetsuharu OHZEKI <saneyuki.snyk@gmail.com> | 2014-04-24 14:37:04 +0900 |
commit | 6c987c31b5caac83d006c1e606439a50cfaf127a (patch) | |
tree | 939c609553031d8f2d65c2b13f048792dcab188a /src/components/script/script_task.rs | |
parent | fff94a35b3b603e50d70555712e57644a0b61d14 (diff) | |
download | servo-6c987c31b5caac83d006c1e606439a50cfaf127a.tar.gz servo-6c987c31b5caac83d006c1e606439a50cfaf127a.zip |
Add Page::get_nodes_under_mouse().
Diffstat (limited to 'src/components/script/script_task.rs')
-rw-r--r-- | src/components/script/script_task.rs | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index 7e8c8eca384..1b0da3556e7 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -457,6 +457,26 @@ impl Page { }; address } + + pub fn get_nodes_under_mouse(&self, point: &Point2D<f32>) -> Option<~[UntrustedNodeAddress]> { + let frame = self.frame(); + let document = frame.get_ref().document.clone(); + let root = document.get().GetDocumentElement(); + if root.is_none() { + return None; + } + let root: JS<Node> = NodeCast::from(&root.unwrap()); + let (chan, port) = channel(); + let address = match self.query_layout(MouseOverQuery(root.to_trusted_node_address(), *point, chan), port) { + Ok(MouseOverResponse(node_address)) => { + Some(node_address) + } + Err(()) => { + None + } + }; + address + } } /// Information for one frame in the browsing context. @@ -1077,22 +1097,15 @@ impl ScriptTask { } } } + None => {} } } MouseDownEvent(..) => {} MouseUpEvent(..) => {} MouseMoveEvent(point) => { - let frame = page.frame(); - let document = frame.get_ref().document.clone(); - let root = document.get().GetDocumentElement(); - if root.is_none() { - return; - } - let root: JS<Node> = NodeCast::from(&root.unwrap()); - let (chan, port) = channel(); - match page.query_layout(MouseOverQuery(root.to_trusted_node_address(), point, chan), port) { - Ok(MouseOverResponse(node_address)) => { + match page.get_nodes_under_mouse(&point) { + Some(node_address) => { let mut target_list: ~[JS<Node>] = ~[]; let mut target_compare = false; @@ -1150,8 +1163,9 @@ impl ScriptTask { } *mouse_over_targets = Some(target_list); } - }, - Err(()) => {}, + } + + None => {} } } } |