diff --git a/components/style/cbindgen.toml b/components/style/cbindgen.toml index 50696b32e6dc..29aafa4945b1 100644 --- a/components/style/cbindgen.toml +++ b/components/style/cbindgen.toml @@ -78,6 +78,7 @@ include = [ "LengthPercentage", "NonNegativeLengthPercentage", "LengthPercentageOrAuto", + "NonNegativeLengthPercentageOrAuto", "Rect", "IntersectionObserverRootMargin", "Size", diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 0260be793f5e..13480948ecf5 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -1677,14 +1677,17 @@ fn static_assert() { % endfor +<% skip_scroll_padding_longhands = " ".join(["scroll-padding-%s" % x.ident for x in SIDES]) %> <% skip_padding_longhands = " ".join(["padding-%s" % x.ident for x in SIDES]) %> <%self:impl_trait style_struct_name="Padding" - skip_longhands="${skip_padding_longhands}"> + skip_longhands="${skip_padding_longhands} + ${skip_scroll_padding_longhands}"> % for side in SIDES: <% impl_split_style_coord("padding_%s" % side.ident, "mPadding", side.index) %> + <% impl_split_style_coord("scroll_padding_%s" % side.ident, "mScrollPadding", side.index) %> % endfor diff --git a/components/style/properties/longhands/padding.mako.rs b/components/style/properties/longhands/padding.mako.rs index 5fa518636299..6c4e2b32cf9a 100644 --- a/components/style/properties/longhands/padding.mako.rs +++ b/components/style/properties/longhands/padding.mako.rs @@ -28,3 +28,17 @@ servo_restyle_damage="reflow rebuild_and_reflow_inline" )} % endfor + +% for side in ALL_SIDES: + ${helpers.predefined_type( + "scroll-padding-%s" % side[0], + "NonNegativeLengthPercentageOrAuto", + "computed::NonNegativeLengthPercentageOrAuto::auto()", + products="gecko", + gecko_pref="layout.css.scroll-snap-v1.enabled", + logical=side[1], + logical_group="scroll-padding", + spec="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-%s" % side[0], + animation_value_type="ComputedValue", + )} +% endfor diff --git a/components/style/properties/shorthands/padding.mako.rs b/components/style/properties/shorthands/padding.mako.rs index 3efc0b4a153c..a4e013caabc3 100644 --- a/components/style/properties/shorthands/padding.mako.rs +++ b/components/style/properties/shorthands/padding.mako.rs @@ -27,3 +27,33 @@ ${helpers.two_properties_shorthand( "specified::NonNegativeLengthPercentage::parse", spec="https://drafts.csswg.org/css-logical/#propdef-padding-inline" )} + +${helpers.four_sides_shorthand( + "scroll-padding", + "scroll-padding-%s", + "specified::NonNegativeLengthPercentageOrAuto::parse", + products="gecko", + gecko_pref="layout.css.scroll-snap-v1.enabled", + spec="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding" +)} + +${helpers.two_properties_shorthand( + "scroll-padding-block", + "scroll-padding-block-start", + "scroll-padding-block-end", + "specified::NonNegativeLengthPercentageOrAuto::parse", + products="gecko", + gecko_pref="layout.css.scroll-snap-v1.enabled", + spec="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block" +)} + +${helpers.two_properties_shorthand( + "scroll-padding-inline", + "scroll-padding-inline-start", + "scroll-padding-inline-end", + "specified::NonNegativeLengthPercentageOrAuto::parse", + products="gecko", + gecko_pref="layout.css.scroll-snap-v1.enabled", + spec="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline" +)} + diff --git a/components/style/values/computed/length.rs b/components/style/values/computed/length.rs index 6cdf359d16a1..3b2a4dfd4760 100644 --- a/components/style/values/computed/length.rs +++ b/components/style/values/computed/length.rs @@ -503,7 +503,7 @@ impl LengthPercentageOrAuto { /// A wrapper of LengthPercentageOrAuto, whose value must be >= 0. pub type NonNegativeLengthPercentageOrAuto = - generics::LengthPercentageOrAuto; + generics::GenericLengthPercentageOrAuto; impl NonNegativeLengthPercentageOrAuto { computed_length_percentage_or_auto!(NonNegativeLengthPercentage);