Skip to content

Commit

Permalink
stylo: Round down when computing viewport units
Browse files Browse the repository at this point in the history
  • Loading branch information
Manishearth committed Sep 11, 2017
1 parent d2b689c commit 265483b
Showing 1 changed file with 10 additions and 12 deletions.
22 changes: 10 additions & 12 deletions components/style/values/specified/length.rs
Expand Up @@ -198,23 +198,21 @@ impl ToCss for ViewportPercentageLength {
impl ViewportPercentageLength {
/// Computes the given viewport-relative length for the given viewport size.
pub fn to_computed_value(&self, viewport_size: Size2D<Au>) -> Au {
macro_rules! to_unit {
($viewport_dimension:expr) => {
$viewport_dimension.to_f32_px() / 100.0
}
}

let value = match *self {
let (factor, length) = match *self {
ViewportPercentageLength::Vw(length) =>
length * to_unit!(viewport_size.width),
(length, viewport_size.width),
ViewportPercentageLength::Vh(length) =>
length * to_unit!(viewport_size.height),
(length, viewport_size.height),
ViewportPercentageLength::Vmin(length) =>
length * to_unit!(cmp::min(viewport_size.width, viewport_size.height)),
(length, cmp::min(viewport_size.width, viewport_size.height)),
ViewportPercentageLength::Vmax(length) =>
length * to_unit!(cmp::max(viewport_size.width, viewport_size.height)),
(length, cmp::max(viewport_size.width, viewport_size.height)),
};
Au::from_f32_px(value)

// See bug 989802. We truncate so that adding multiple viewport units
// that add up to 100 does not overflow due to rounding differences
let trunc_scaled = ((length.0 as f64) * factor as f64 / 100.).trunc();
Au::from_f64_au(trunc_scaled)
}
}

Expand Down

0 comments on commit 265483b

Please sign in to comment.