mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Update WebRender
This allows servo to use the ExternalScrollId API from WebRender fixing some issues related to duplicate scroll root ids. Fixes #17176. Fixes #19287. Fixes #19648.
This commit is contained in:
parent
984f3ccc41
commit
99eb457fc7
19 changed files with 154 additions and 119 deletions
|
@ -113,7 +113,7 @@ pub enum ReflowGoal {
|
|||
TickAnimations,
|
||||
ContentBoxQuery(TrustedNodeAddress),
|
||||
ContentBoxesQuery(TrustedNodeAddress),
|
||||
NodeScrollRootIdQuery(TrustedNodeAddress),
|
||||
NodeScrollIdQuery(TrustedNodeAddress),
|
||||
NodeGeometryQuery(TrustedNodeAddress),
|
||||
NodeScrollGeometryQuery(TrustedNodeAddress),
|
||||
ResolvedStyleQuery(TrustedNodeAddress, Option<PseudoElement>, PropertyId),
|
||||
|
@ -132,7 +132,7 @@ impl ReflowGoal {
|
|||
ReflowGoal::TickAnimations | ReflowGoal::Full => true,
|
||||
ReflowGoal::ContentBoxQuery(_) | ReflowGoal::ContentBoxesQuery(_) |
|
||||
ReflowGoal::NodeGeometryQuery(_) | ReflowGoal::NodeScrollGeometryQuery(_) |
|
||||
ReflowGoal::NodeScrollRootIdQuery(_) |
|
||||
ReflowGoal::NodeScrollIdQuery(_) |
|
||||
ReflowGoal::ResolvedStyleQuery(..) | ReflowGoal::OffsetParentQuery(_) |
|
||||
ReflowGoal::StyleQuery(_) => false,
|
||||
}
|
||||
|
@ -145,8 +145,7 @@ impl ReflowGoal {
|
|||
ReflowGoal::StyleQuery(_) | ReflowGoal::TextIndexQuery(..) |
|
||||
ReflowGoal::ContentBoxQuery(_) | ReflowGoal::ContentBoxesQuery(_) |
|
||||
ReflowGoal::NodeGeometryQuery(_) | ReflowGoal::NodeScrollGeometryQuery(_) |
|
||||
ReflowGoal::NodeScrollRootIdQuery(_) |
|
||||
ReflowGoal::ResolvedStyleQuery(..) |
|
||||
ReflowGoal::NodeScrollIdQuery(_) | ReflowGoal::ResolvedStyleQuery(..) |
|
||||
ReflowGoal::OffsetParentQuery(_) => false,
|
||||
ReflowGoal::NodesFromPointQuery(..) | ReflowGoal::Full |
|
||||
ReflowGoal::TickAnimations => true,
|
||||
|
|
|
@ -8,7 +8,7 @@ use script_traits::UntrustedNodeAddress;
|
|||
use servo_arc::Arc;
|
||||
use style::properties::ComputedValues;
|
||||
use style::properties::longhands::overflow_x;
|
||||
use webrender_api::ClipId;
|
||||
use webrender_api::ExternalScrollId;
|
||||
|
||||
/// Synchronous messages that script can send to layout.
|
||||
///
|
||||
|
@ -27,8 +27,8 @@ pub trait LayoutRPC {
|
|||
fn node_geometry(&self) -> NodeGeometryResponse;
|
||||
/// Requests the scroll geometry of this node. Used by APIs such as `scrollTop`.
|
||||
fn node_scroll_area(&self) -> NodeGeometryResponse;
|
||||
/// Requests the scroll root id of this node. Used by APIs such as `scrollTop`
|
||||
fn node_scroll_root_id(&self) -> NodeScrollRootIdResponse;
|
||||
/// Requests the scroll id of this node. Used by APIs such as `scrollTop`
|
||||
fn node_scroll_id(&self) -> NodeScrollIdResponse;
|
||||
/// Query layout for the resolved value of a given CSS property
|
||||
fn resolved_style(&self) -> ResolvedStyleResponse;
|
||||
fn offset_parent(&self) -> OffsetParentResponse;
|
||||
|
@ -51,7 +51,7 @@ pub struct NodeGeometryResponse {
|
|||
|
||||
pub struct NodeOverflowResponse(pub Option<Point2D<overflow_x::computed_value::T>>);
|
||||
|
||||
pub struct NodeScrollRootIdResponse(pub ClipId);
|
||||
pub struct NodeScrollIdResponse(pub ExternalScrollId);
|
||||
|
||||
pub struct ResolvedStyleResponse(pub String);
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ use style::font_metrics::ServoMetricsProvider;
|
|||
use style::properties::ComputedValues;
|
||||
use style::selector_parser::{PseudoElement, PseudoElementCascadeType, SelectorImpl};
|
||||
use style::stylist::RuleInclusion;
|
||||
use webrender_api::ClipId;
|
||||
use webrender_api::ExternalScrollId;
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||
pub enum PseudoElementType {
|
||||
|
@ -269,9 +269,9 @@ pub trait ThreadSafeLayoutNode: Clone + Copy + Debug + GetLayoutData + NodeInfo
|
|||
self.get_pseudo_element_type().fragment_type()
|
||||
}
|
||||
|
||||
fn generate_scroll_root_id(&self, pipeline_id: PipelineId) -> ClipId {
|
||||
fn generate_scroll_id(&self, pipeline_id: PipelineId) -> ExternalScrollId {
|
||||
let id = combine_id_with_fragment_type(self.opaque().id(), self.fragment_type());
|
||||
ClipId::new(id as u64, pipeline_id.to_webrender())
|
||||
ExternalScrollId(id as u64, pipeline_id.to_webrender())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue