diff options
Diffstat (limited to 'src/components/script/script_task.rs')
-rw-r--r-- | src/components/script/script_task.rs | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index cf99428c677..094336bf1ab 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -7,11 +7,11 @@ use dom::bindings::utils::GlobalStaticData; use dom::document::Document; -use dom::event::{Event, ResizeEvent, ReflowEvent}; +use dom::event::{Event, ResizeEvent, ReflowEvent, ClickEvent}; use dom::node::define_bindings; use dom::window::Window; -use layout_interface::{AddStylesheetMsg, BuildData, BuildMsg, Damage, LayoutQuery}; -use layout_interface::{LayoutResponse, LayoutTask, MatchSelectorsDamage, NoDamage}; +use layout_interface::{AddStylesheetMsg, BuildData, BuildMsg, Damage, LayoutQuery, HitTestQuery}; +use layout_interface::{LayoutResponse, HitTestResponse, LayoutTask, MatchSelectorsDamage, NoDamage}; use layout_interface::{QueryMsg, ReflowDamage}; use layout_interface; @@ -460,6 +460,23 @@ impl ScriptContext { self.relayout() } } + + ClickEvent(point) => { + debug!("ClickEvent: clicked at %?", point); + let root = match self.root_frame { + Some(ref frame) => frame.document.root, + None => fail!("root frame is None") + }; + match self.query_layout(HitTestQuery(root, point)) { + Ok(node) => match node { + HitTestResponse(node) => debug!("clicked on %?", node.debug_str()), + _ => fail!(~"unexpected layout reply") + }, + Err(()) => { + println(fmt!("layout query error")); + } + }; + } } } } |