aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/fragment.rs
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2018-05-08 17:05:06 +0200
committerMartin Robinson <mrobinson@igalia.com>2018-06-04 13:52:08 +0200
commit32f00ef821c895ada5eb5cf7c291d5a0a220eb58 (patch)
tree625701ace2e5f710ba890181975fe83e52b919b1 /components/layout/fragment.rs
parent11a89bcc47c73701d8809cf33163a1f61d792b17 (diff)
downloadservo-32f00ef821c895ada5eb5cf7c291d5a0a220eb58.tar.gz
servo-32f00ef821c895ada5eb5cf7c291d5a0a220eb58.zip
Use reference frames explicitly for fixed positioning
Now that WebRender gives us reference frame ClipIds, we can use those to implement fixed positioning in Servo. This will allow us to remove the feature from WebRender entirely.
Diffstat (limited to 'components/layout/fragment.rs')
-rw-r--r--components/layout/fragment.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs
index a1c84da3569..38ea9d03b93 100644
--- a/components/layout/fragment.rs
+++ b/components/layout/fragment.rs
@@ -2474,6 +2474,12 @@ impl Fragment {
stacking_relative_border_box.size.height - border_padding.vertical()))
}
+ /// Returns true if this fragment may establish a reference frame.
+ pub fn can_establish_reference_frame(&self) -> bool {
+ !self.style().get_box().transform.0.is_empty() ||
+ self.style().get_box().perspective != Perspective::None
+ }
+
/// Returns true if this fragment has a filter, transform, or perspective property set.
pub fn has_filter_transform_or_perspective(&self) -> bool {
!self.style().get_box().transform.0.is_empty() ||