diff options
author | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2016-02-20 21:36:24 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2016-03-02 20:14:15 +0100 |
commit | 48dee6413dae56e3a41832a8dc415d5cc6741fa8 (patch) | |
tree | a126899e943cce1ca7a5a2cc80531cbfbf0f16de /components/script | |
parent | c3786437a39faf2c52b66f7dcc3b8a9430a62dbc (diff) | |
download | servo-48dee6413dae56e3a41832a8dc415d5cc6741fa8.tar.gz servo-48dee6413dae56e3a41832a8dc415d5cc6741fa8.zip |
script/layout: Refactor mouse_over since it now basically uses hit_test
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/document.rs | 22 | ||||
-rw-r--r-- | components/script/layout_interface.rs | 5 |
2 files changed, 8 insertions, 19 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 966d245628b..d3bbfded3b4 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -80,7 +80,7 @@ use html5ever::tree_builder::{LimitedQuirks, NoQuirks, Quirks, QuirksMode}; use ipc_channel::ipc::{self, IpcSender}; use js::jsapi::JS_GetRuntime; use js::jsapi::{JSContext, JSObject, JSRuntime}; -use layout_interface::{HitTestResponse, MouseOverResponse}; +use layout_interface::HitTestResponse; use layout_interface::{LayoutChan, Msg, ReflowQueryType}; use msg::constellation_msg::{ALT, CONTROL, SHIFT, SUPER}; use msg::constellation_msg::{ConstellationChan, Key, KeyModifiers, KeyState}; @@ -563,9 +563,9 @@ impl Document { .map(Root::upcast) } - pub fn hit_test(&self, page_point: &Point2D<f32>) -> Option<UntrustedNodeAddress> { + pub fn hit_test(&self, page_point: &Point2D<f32>, update_cursor: bool) -> Option<UntrustedNodeAddress> { assert!(self.GetDocumentElement().is_some()); - match self.window.layout().hit_test(*page_point) { + match self.window.layout().hit_test(*page_point, update_cursor) { Ok(HitTestResponse(node_address)) => Some(node_address), Err(()) => { debug!("layout query error"); @@ -574,14 +574,6 @@ impl Document { } } - pub fn get_node_under_mouse(&self, page_point: &Point2D<f32>) -> Option<UntrustedNodeAddress> { - assert!(self.GetDocumentElement().is_some()); - match self.window.layout().mouse_over(*page_point) { - Ok(MouseOverResponse(node_address)) => Some(node_address), - Err(()) => None, - } - } - // https://html.spec.whatwg.org/multipage/#current-document-readiness pub fn set_ready_state(&self, state: DocumentReadyState) { match state { @@ -693,7 +685,7 @@ impl Document { let page_point = Point2D::new(client_point.x + self.window.PageXOffset() as f32, client_point.y + self.window.PageYOffset() as f32); - let node = match self.hit_test(&page_point) { + let node = match self.hit_test(&page_point, false) { Some(node_address) => { debug!("node address is {:?}", node_address); node::from_untrusted_node_address(js_runtime, node_address) @@ -811,7 +803,7 @@ impl Document { let mouse_over_address = client_point.as_ref().map(|client_point| { let page_point = Point2D::new(client_point.x + self.window.PageXOffset() as f32, client_point.y + self.window.PageYOffset() as f32); - self.get_node_under_mouse(&page_point) + self.hit_test(&page_point, true) }).unwrap_or(None); let mut mouse_over_targets = RootedVec::<JS<Element>>::new(); @@ -918,7 +910,7 @@ impl Document { TouchEventType::Cancel => "touchcancel", }; - let node = match self.hit_test(&point) { + let node = match self.hit_test(&point, false) { Some(node_address) => node::from_untrusted_node_address(js_runtime, node_address), None => return false, }; @@ -2585,7 +2577,7 @@ impl DocumentMethods for Document { let js_runtime = unsafe { JS_GetRuntime(window.get_cx()) }; - match self.hit_test(point) { + match self.hit_test(point, false) { Some(untrusted_node_address) => { let node = node::from_untrusted_node_address(js_runtime, untrusted_node_address); let parent_node = node.GetParentNode().unwrap(); diff --git a/components/script/layout_interface.rs b/components/script/layout_interface.rs index 4ad7c241f14..3976f0a8d20 100644 --- a/components/script/layout_interface.rs +++ b/components/script/layout_interface.rs @@ -105,9 +105,7 @@ pub trait LayoutRPC { /// Requests the geometry of this node. Used by APIs such as `clientTop`. fn node_geometry(&self) -> NodeGeometryResponse; /// Requests the node containing the point of interest - fn hit_test(&self, point: Point2D<f32>) -> Result<HitTestResponse, ()>; - /// Query layout for the topmost node under the mouse. - fn mouse_over(&self, point: Point2D<f32>) -> Result<MouseOverResponse, ()>; + fn hit_test(&self, point: Point2D<f32>, update_cursor: bool) -> Result<HitTestResponse, ()>; /// Query layout for the resolved value of a given CSS property fn resolved_style(&self) -> ResolvedStyleResponse; fn offset_parent(&self) -> OffsetParentResponse; @@ -140,7 +138,6 @@ pub struct NodeGeometryResponse { pub client_rect: Rect<i32>, } pub struct HitTestResponse(pub UntrustedNodeAddress); -pub struct MouseOverResponse(pub UntrustedNodeAddress); pub struct ResolvedStyleResponse(pub Option<String>); #[derive(Clone)] |