diff options
Diffstat (limited to 'components/layout/display_list/builder.rs')
-rw-r--r-- | components/layout/display_list/builder.rs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index d26cd6b9c32..73343c3a4f2 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -58,7 +58,7 @@ use style::properties::{style_structs, ComputedValues}; use style::servo::restyle_damage::ServoRestyleDamage; use style::values::computed::effects::SimpleShadow; use style::values::computed::image::Image as ComputedImage; -use style::values::computed::Gradient; +use style::values::computed::{Gradient, LengthOrAuto}; use style::values::generics::background::BackgroundSize; use style::values::generics::image::{GradientKind, Image, PaintWorklet}; use style::values::specified::ui::CursorKind; @@ -2627,19 +2627,22 @@ impl BlockFlow { _ => return, } + fn extract_clip_component(p: &LengthOrAuto) -> Option<Au> { + match *p { + LengthOrAuto::Auto => None, + LengthOrAuto::LengthPercentage(ref length) => Some(Au::from(*length)), + } + } + let clip_origin = Point2D::new( stacking_relative_border_box.origin.x + - style_clip_rect.left.map(Au::from).unwrap_or(Au(0)), + extract_clip_component(&style_clip_rect.left).unwrap_or_default(), stacking_relative_border_box.origin.y + - style_clip_rect.top.map(Au::from).unwrap_or(Au(0)), + extract_clip_component(&style_clip_rect.top).unwrap_or_default(), ); - let right = style_clip_rect - .right - .map(Au::from) + let right = extract_clip_component(&style_clip_rect.right) .unwrap_or(stacking_relative_border_box.size.width); - let bottom = style_clip_rect - .bottom - .map(Au::from) + let bottom = extract_clip_component(&style_clip_rect.bottom) .unwrap_or(stacking_relative_border_box.size.height); let clip_size = Size2D::new(right - clip_origin.x, bottom - clip_origin.y); |