Skip to content

Commit

Permalink
Properly set default direction of prefixed linear gradients
Browse files Browse the repository at this point in the history
The default linear gradient direction is `to bottom`. This correspondes to
`top` keyword in prefixed linear gradients. We should preserve the default value.
  • Loading branch information
canova committed Aug 31, 2017
1 parent 19cbea2 commit a0c1eb5
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 7 deletions.
7 changes: 5 additions & 2 deletions components/style/values/computed/image.rs
Expand Up @@ -78,10 +78,13 @@ pub type ColorStop = GenericColorStop<RGBA, LengthOrPercentage>;
pub type MozImageRect = GenericMozImageRect<NumberOrPercentage, ComputedUrl>;

impl GenericLineDirection for LineDirection {
fn points_downwards(&self) -> bool {
fn points_downwards(&self, compat_mode: CompatMode) -> bool {
match *self {
LineDirection::Angle(angle) => angle.radians() == PI,
LineDirection::Vertical(Y::Bottom) => true,
LineDirection::Vertical(Y::Bottom)
if compat_mode == CompatMode::Modern => true,
LineDirection::Vertical(Y::Top)
if compat_mode != CompatMode::Modern => true,
LineDirection::Corner(..) => false,
#[cfg(feature = "gecko")]
LineDirection::MozPosition(_, _) => false,
Expand Down
5 changes: 3 additions & 2 deletions components/style/values/generics/image.rs
Expand Up @@ -230,7 +230,8 @@ impl<D, L, LoP, P, C, A> ToCss for Gradient<D, L, LoP, P, C, A>
dest.write_str(self.kind.label())?;
dest.write_str("-gradient(")?;
let mut skip_comma = match self.kind {
GradientKind::Linear(ref direction) if direction.points_downwards() => true,
GradientKind::Linear(ref direction)
if direction.points_downwards(self.compat_mode) => true,
GradientKind::Linear(ref direction) => {
direction.to_css(dest, self.compat_mode)?;
false
Expand Down Expand Up @@ -287,7 +288,7 @@ impl<D, L, LoP, P, A> GradientKind<D, L, LoP, P, A> {
/// The direction of a linear gradient.
pub trait LineDirection {
/// Whether this direction points towards, and thus can be omitted.
fn points_downwards(&self) -> bool;
fn points_downwards(&self, compat_mode: CompatMode) -> bool;

/// Serialises this direction according to the compatibility mode.
fn to_css<W>(&self, dest: &mut W, compat_mode: CompatMode) -> fmt::Result
Expand Down
12 changes: 9 additions & 3 deletions components/style/values/specified/image.rs
Expand Up @@ -526,7 +526,10 @@ impl GradientKind {
input.expect_comma()?;
d
} else {
LineDirection::Vertical(Y::Bottom)
match *compat_mode {
CompatMode::Modern => LineDirection::Vertical(Y::Bottom),
_ => LineDirection::Vertical(Y::Top),
}
};
Ok(GenericGradientKind::Linear(direction))
}
Expand Down Expand Up @@ -615,10 +618,13 @@ impl GradientKind {
}

impl GenericsLineDirection for LineDirection {
fn points_downwards(&self) -> bool {
fn points_downwards(&self, compat_mode: CompatMode) -> bool {
match *self {
LineDirection::Angle(ref angle) => angle.radians() == PI,
LineDirection::Vertical(Y::Bottom) => true,
LineDirection::Vertical(Y::Bottom)
if compat_mode == CompatMode::Modern => true,
LineDirection::Vertical(Y::Top)
if compat_mode != CompatMode::Modern => true,
_ => false,
}
}
Expand Down

0 comments on commit a0c1eb5

Please sign in to comment.