diff options
Diffstat (limited to 'components/gfx/display_list/mod.rs')
-rw-r--r-- | components/gfx/display_list/mod.rs | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/components/gfx/display_list/mod.rs b/components/gfx/display_list/mod.rs index ba34abea28d..8fa0c33df49 100644 --- a/components/gfx/display_list/mod.rs +++ b/components/gfx/display_list/mod.rs @@ -33,8 +33,8 @@ use style::values::computed::Filter; use style_traits::cursor::Cursor; use text::TextRun; use text::glyph::ByteIndex; -use webrender_api::{self, ClipId, ColorF, GradientStop, LocalClip, MixBlendMode, ScrollPolicy}; -use webrender_api::{ScrollSensitivity, TransformStyle, WebGLContextId}; +use webrender_api::{self, ClipAndScrollInfo, ClipId, ColorF, GradientStop, LocalClip}; +use webrender_api::{MixBlendMode, ScrollPolicy, ScrollSensitivity, TransformStyle, WebGLContextId}; pub use style::dom::OpaqueNode; @@ -152,7 +152,7 @@ impl DisplayList { match item { &DisplayItem::PushStackingContext(ref context_item) => { self.text_index_stacking_context(&context_item.stacking_context, - item.base().scroll_root_id, + item.scroll_node_id(), node, traversal, point, @@ -229,7 +229,7 @@ impl DisplayList { match item { &DisplayItem::PushStackingContext(ref context_item) => { self.hit_test_stacking_context(&context_item.stacking_context, - item.base().scroll_root_id, + item.scroll_node_id(), traversal, point, offset_lookup, @@ -286,10 +286,10 @@ impl DisplayList { pub fn print_with_tree(&self, print_tree: &mut PrintTree) { print_tree.new_level("Items".to_owned()); for item in &self.list { - print_tree.add_item(format!("{:?} StackingContext: {:?} ScrollRoot: {:?}", + print_tree.add_item(format!("{:?} StackingContext: {:?} {:?}", item, item.base().stacking_context_id, - item.scroll_root_id())); + item.clip_and_scroll_info())); } print_tree.end_level(); } @@ -438,8 +438,8 @@ pub struct StackingContext { /// The scroll policy of this layer. pub scroll_policy: ScrollPolicy, - /// The id of the parent scrolling area that contains this StackingContext. - pub parent_scroll_id: ClipId, + /// The clip and scroll info for this StackingContext. + pub parent_clip_and_scroll_info: ClipAndScrollInfo, } impl StackingContext { @@ -456,7 +456,7 @@ impl StackingContext { transform_style: TransformStyle, perspective: Option<Transform3D<f32>>, scroll_policy: ScrollPolicy, - parent_scroll_id: ClipId) + parent_clip_and_scroll_info: ClipAndScrollInfo) -> StackingContext { StackingContext { id: id, @@ -470,7 +470,7 @@ impl StackingContext { transform_style: transform_style, perspective: perspective, scroll_policy: scroll_policy, - parent_scroll_id: parent_scroll_id, + parent_clip_and_scroll_info: parent_clip_and_scroll_info, } } @@ -487,13 +487,13 @@ impl StackingContext { TransformStyle::Flat, None, ScrollPolicy::Scrollable, - pipeline_id.root_scroll_node()) + pipeline_id.root_clip_and_scroll_info()) } pub fn to_display_list_items(self, pipeline_id: PipelineId) -> (DisplayItem, DisplayItem) { let mut base_item = BaseDisplayItem::empty(pipeline_id); base_item.stacking_context_id = self.id; - base_item.scroll_root_id = self.parent_scroll_id; + base_item.clip_and_scroll_info = self.parent_clip_and_scroll_info; let pop_item = DisplayItem::PopStackingContext(Box::new( PopStackingContextItem { @@ -631,8 +631,8 @@ pub struct BaseDisplayItem { /// The id of the stacking context this item belongs to. pub stacking_context_id: StackingContextId, - /// The id of the scroll root this item belongs to. - pub scroll_root_id: ClipId, + /// The clip and scroll info for this item. + pub clip_and_scroll_info: ClipAndScrollInfo, } impl BaseDisplayItem { @@ -642,7 +642,7 @@ impl BaseDisplayItem { local_clip: LocalClip, section: DisplayListSection, stacking_context_id: StackingContextId, - scroll_root_id: ClipId) + clip_and_scroll_info: ClipAndScrollInfo) -> BaseDisplayItem { BaseDisplayItem { bounds: *bounds, @@ -650,7 +650,7 @@ impl BaseDisplayItem { local_clip: local_clip, section: section, stacking_context_id: stacking_context_id, - scroll_root_id: scroll_root_id, + clip_and_scroll_info: clip_and_scroll_info, } } @@ -665,7 +665,7 @@ impl BaseDisplayItem { local_clip: LocalClip::from(max_rect().to_rectf()), section: DisplayListSection::Content, stacking_context_id: StackingContextId::root(), - scroll_root_id: pipeline_id.root_scroll_node(), + clip_and_scroll_info: pipeline_id.root_clip_and_scroll_info(), } } } @@ -1265,8 +1265,12 @@ impl DisplayItem { } } - pub fn scroll_root_id(&self) -> ClipId { - self.base().scroll_root_id + pub fn scroll_node_id(&self) -> ClipId { + self.base().clip_and_scroll_info.scroll_node_id + } + + pub fn clip_and_scroll_info(&self) -> ClipAndScrollInfo { + self.base().clip_and_scroll_info } pub fn stacking_context_id(&self) -> StackingContextId { @@ -1297,7 +1301,7 @@ impl DisplayItem { // test elements with `border-radius`, for example. let base_item = self.base(); - let scroll_offset = offset_lookup.full_offset_for_scroll_root(&base_item.scroll_root_id); + let scroll_offset = offset_lookup.full_offset_for_scroll_root(&self.scroll_node_id()); let point = Point2D::new(point.x - Au::from_f32_px(scroll_offset.x), point.y - Au::from_f32_px(scroll_offset.y)); |