diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 02e3ace6f444..9d7e328f3451 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -679,6 +679,7 @@ impl Debug for ${style_struct.gecko_struct_name} { "LengthOrPercentageOrAuto": impl_style_coord, "LengthOrPercentageOrNone": impl_style_coord, "LengthOrNone": impl_style_coord, + "LengthOrNormal": impl_style_coord, "MaxLength": impl_style_coord, "MinLength": impl_style_coord, "Number": impl_simple, @@ -3610,6 +3611,17 @@ clip-path ${impl_simple_copy('column_count', 'mColumnCount')} + pub fn clone_column_count(&self) -> longhands::column_count::computed_value::T { + use gecko_bindings::structs::NS_STYLE_COLUMN_COUNT_AUTO; + if self.gecko.mColumnCount != NS_STYLE_COLUMN_COUNT_AUTO { + debug_assert!((self.gecko.mColumnCount as i32) >= 0 && + (self.gecko.mColumnCount as i32) < i32::max_value()); + Either::First(self.gecko.mColumnCount as i32) + } else { + Either::Second(Auto) + } + } + <% impl_app_units("column_rule_width", "mColumnRuleWidth", need_clone=True, round_to_pixels=True) %> diff --git a/components/style/properties/helpers/animated_properties.mako.rs b/components/style/properties/helpers/animated_properties.mako.rs index ff11c9d59301..b097d9368e77 100644 --- a/components/style/properties/helpers/animated_properties.mako.rs +++ b/components/style/properties/helpers/animated_properties.mako.rs @@ -29,7 +29,7 @@ use std::fmt; use style_traits::ToCss; use super::ComputedValues; use values::CSSFloat; -use values::{Auto, Either}; +use values::{Auto, Either, Normal}; use values::computed::{Angle, LengthOrPercentageOrAuto, LengthOrPercentageOrNone}; use values::computed::{BorderRadiusSize, ClipRect, LengthOrNone}; use values::computed::{CalcLengthOrPercentage, Context, LengthOrPercentage}; @@ -515,6 +515,13 @@ impl Interpolate for Auto { } } +impl Interpolate for Normal { + #[inline] + fn interpolate(&self, _other: &Self, _progress: f64) -> Result { + Ok(Normal) + } +} + impl Interpolate for Option where T: Interpolate, { diff --git a/components/style/properties/longhand/column.mako.rs b/components/style/properties/longhand/column.mako.rs index bb62aea7a320..89766b4ae5a5 100644 --- a/components/style/properties/longhand/column.mako.rs +++ b/components/style/properties/longhand/column.mako.rs @@ -6,20 +6,19 @@ <% data.new_style_struct("Column", inherited=False) %> -// FIXME: This prop should be animatable. ${helpers.predefined_type("column-width", "length::LengthOrAuto", "Either::Second(Auto)", initial_specified_value="Either::Second(Auto)", parse_method="parse_non_negative_length", extra_prefixes="moz", - animation_type="none", + animation_type="normal", experimental=True, spec="https://drafts.csswg.org/css-multicol/#propdef-column-width")} -// FIXME: This prop should be animatable. -${helpers.predefined_type("column-count", "IntegerOrAuto", +${helpers.predefined_type("column-count", + "IntegerOrAuto", "Either::Second(Auto)", parse_method="parse_positive", initial_specified_value="Either::Second(Auto)", @@ -28,14 +27,13 @@ ${helpers.predefined_type("column-count", "IntegerOrAuto", extra_prefixes="moz", spec="https://drafts.csswg.org/css-multicol/#propdef-column-count")} -// FIXME: This prop should be animatable. ${helpers.predefined_type("column-gap", "length::LengthOrNormal", "Either::Second(Normal)", parse_method='parse_non_negative_length', extra_prefixes="moz", experimental=True, - animation_type="none", + animation_type="normal", spec="https://drafts.csswg.org/css-multicol/#propdef-column-gap")} ${helpers.single_keyword("column-fill", "balance auto", extra_prefixes="moz",