stylo: Implement scroll-snap-destination

MozReview-Commit-ID: 6mr4ktfeEGT
This commit is contained in:
Manish Goregaokar 2017-02-06 17:45:09 -08:00 committed by Manish Goregaokar
parent 3b59dbadee
commit a095565a8c
5 changed files with 26 additions and 1 deletions

View file

@ -1169,7 +1169,7 @@ fn static_assert() {
animation-iteration-count animation-timing-function
-moz-binding page-break-before page-break-after
scroll-snap-points-x scroll-snap-points-y transform
scroll-snap-type-y perspective-origin transform-origin""" %>
scroll-snap-type-y scroll-snap-destination perspective-origin transform-origin""" %>
<%self:impl_trait style_struct_name="Box" skip_longhands="${skip_box_longhands}">
// We manually-implement the |display| property until we get general
@ -1340,6 +1340,13 @@ fn static_assert() {
${impl_coord_copy('scroll_snap_points_y', 'mScrollSnapPointsY')}
pub fn set_scroll_snap_destination(&mut self, v: longhands::scroll_snap_destination::computed_value::T) {
self.gecko.mScrollSnapDestination.mXPosition = v.horizontal.into();
self.gecko.mScrollSnapDestination.mYPosition = v.vertical.into();
}
${impl_simple_copy('scroll_snap_destination', 'mScrollSnapDestination')}
<%def name="transform_function_arm(name, keyword, items)">
<%
pattern = None

View file

@ -1049,6 +1049,12 @@ ${helpers.single_keyword("animation-fill-mode",
</%helpers:longhand>
${helpers.predefined_type("scroll-snap-destination",
"Position",
"computed::Position::zero()",
products="gecko",
spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-destination)",
animatable=False)}
<%helpers:longhand name="transform" products="gecko servo" extra_prefixes="webkit"
animatable="True"

View file

@ -20,6 +20,7 @@ pub use super::specified::{Angle, BorderStyle, GridLine, Time, UrlOrNone};
pub use super::specified::url::UrlExtraData;
pub use self::length::{CalcLengthOrPercentage, Length, LengthOrNumber, LengthOrPercentage, LengthOrPercentageOrAuto};
pub use self::length::{LengthOrPercentageOrAutoOrContent, LengthOrPercentageOrNone, LengthOrNone};
pub use self::position::Position;
pub mod basic_shape;
pub mod image;

View file

@ -19,6 +19,16 @@ pub struct Position {
pub vertical: LengthOrPercentage,
}
impl Position {
/// Construct a position at (0, 0)
pub fn zero() -> Self {
Position {
horizontal: LengthOrPercentage::zero(),
vertical: LengthOrPercentage::zero(),
}
}
}
impl ToCss for Position {
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
try!(self.horizontal.to_css(dest));

View file

@ -27,6 +27,7 @@ pub use self::image::{SizeKeyword, VerticalDirection};
pub use self::length::{FontRelativeLength, ViewportPercentageLength, CharacterWidth, Length, CalcLengthOrPercentage};
pub use self::length::{Percentage, LengthOrNone, LengthOrNumber, LengthOrPercentage, LengthOrPercentageOrAuto};
pub use self::length::{LengthOrPercentageOrNone, LengthOrPercentageOrAutoOrContent, NoCalcLength, CalcUnit};
pub use self::position::{HorizontalPosition, Position, VerticalPosition};
pub mod basic_shape;
pub mod grid;