mirror of
https://github.com/servo/servo.git
synced 2025-06-13 19:04:30 +00:00
Implement ScrollTop and ScrollLeft getters:
Add new compositor message to get scroll_offset; Add new layout query for computed value of overflow-x/y; Implement layer_id method for ThreadSafeLayoutNode; Add new layout query for layer_id; Implement script interface for getting scrollTop and scrollLeft, as well as relavant helper functions.
This commit is contained in:
parent
f73c6143d5
commit
fefdaf76de
12 changed files with 243 additions and 9 deletions
|
@ -23,7 +23,7 @@ use std::sync::Arc;
|
|||
use std::sync::mpsc::{Receiver, Sender, channel};
|
||||
use string_cache::Atom;
|
||||
use style::context::ReflowGoal;
|
||||
use style::properties::longhands::{margin_top, margin_right, margin_bottom, margin_left};
|
||||
use style::properties::longhands::{margin_top, margin_right, margin_bottom, margin_left, overflow_x};
|
||||
use style::selector_impl::PseudoElement;
|
||||
use style::servo::Stylesheet;
|
||||
use url::Url;
|
||||
|
@ -104,8 +104,12 @@ pub trait LayoutRPC {
|
|||
fn content_boxes(&self) -> ContentBoxesResponse;
|
||||
/// Requests the geometry of this node. Used by APIs such as `clientTop`.
|
||||
fn node_geometry(&self) -> NodeGeometryResponse;
|
||||
/// Requests the overflow-x and overflow-y of this node. Used by `scrollTop` etc.
|
||||
fn node_overflow(&self) -> NodeOverflowResponse;
|
||||
/// Requests the scroll geometry of this node. Used by APIs such as `scrollTop`.
|
||||
fn node_scroll_area(&self) -> NodeGeometryResponse;
|
||||
/// Requests the layer id of this node. Used by APIs such as `scrollTop`
|
||||
fn node_layer_id(&self) -> NodeLayerIdResponse;
|
||||
/// Requests the node containing the point of interest
|
||||
fn hit_test(&self) -> HitTestResponse;
|
||||
/// Query layout for the resolved value of a given CSS property
|
||||
|
@ -136,6 +140,8 @@ impl MarginStyleResponse {
|
|||
}
|
||||
}
|
||||
|
||||
pub struct NodeOverflowResponse(pub Option<Point2D<overflow_x::computed_value::T>>);
|
||||
|
||||
pub struct ContentBoxResponse(pub Rect<Au>);
|
||||
pub struct ContentBoxesResponse(pub Vec<Rect<Au>>);
|
||||
pub struct HitTestResponse {
|
||||
|
@ -144,6 +150,11 @@ pub struct HitTestResponse {
|
|||
pub struct NodeGeometryResponse {
|
||||
pub client_rect: Rect<i32>,
|
||||
}
|
||||
|
||||
pub struct NodeLayerIdResponse {
|
||||
pub layer_id: LayerId,
|
||||
}
|
||||
|
||||
pub struct ResolvedStyleResponse(pub Option<String>);
|
||||
|
||||
#[derive(Clone)]
|
||||
|
@ -167,8 +178,10 @@ pub enum ReflowQueryType {
|
|||
NoQuery,
|
||||
ContentBoxQuery(TrustedNodeAddress),
|
||||
ContentBoxesQuery(TrustedNodeAddress),
|
||||
NodeOverflowQuery(TrustedNodeAddress),
|
||||
HitTestQuery(Point2D<f32>, bool),
|
||||
NodeGeometryQuery(TrustedNodeAddress),
|
||||
NodeLayerIdQuery(TrustedNodeAddress),
|
||||
NodeScrollGeometryQuery(TrustedNodeAddress),
|
||||
ResolvedStyleQuery(TrustedNodeAddress, Option<PseudoElement>, Atom),
|
||||
OffsetParentQuery(TrustedNodeAddress),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue