Skip to content
Permalink
Browse files

style: Tweak the serialization of text-decoration.

We are trying to not serialize `text-decoration-line: none` if there are other
non-default values for the longhands.

Differential Revision: https://phabricator.services.mozilla.com/D44908
  • Loading branch information...
BorisChiou authored and emilio committed Sep 10, 2019
1 parent 3c2e4d1 commit eb8195dfa4c700a62d9dec62282841e06c0edb02
Showing with 34 additions and 10 deletions.
  1. +34 −10 components/style/properties/shorthands/text.mako.rs
@@ -74,25 +74,49 @@

impl<'a> ToCss for LonghandsToSerialize<'a> {
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write {
self.text_decoration_line.to_css(dest)?;
use crate::values::specified::TextDecorationLine;

let (is_solid_style, is_current_color, is_auto_thickness) =
(
% if engine == "gecko":
if *self.text_decoration_style != text_decoration_style::SpecifiedValue::Solid {
*self.text_decoration_style == text_decoration_style::SpecifiedValue::Solid,
*self.text_decoration_color == specified::Color::CurrentColor,
self.text_decoration_thickness.map_or(true, |t| t.is_auto())
% else:
true, true, true
% endif
);

let mut has_value = false;
let is_none = *self.text_decoration_line == TextDecorationLine::none();
if (is_solid_style && is_current_color && is_auto_thickness) || !is_none {
self.text_decoration_line.to_css(dest)?;
has_value = true;
}

% if engine == "gecko":
if !is_solid_style {
if has_value {
dest.write_str(" ")?;
self.text_decoration_style.to_css(dest)?;
}
self.text_decoration_style.to_css(dest)?;
has_value = true;
}

if *self.text_decoration_color != specified::Color::CurrentColor {
if !is_current_color {
if has_value {
dest.write_str(" ")?;
self.text_decoration_color.to_css(dest)?;
}
self.text_decoration_color.to_css(dest)?;
has_value = true;
}

if let Some(text_decoration_thickness) = self.text_decoration_thickness {
if !text_decoration_thickness.is_auto() {
dest.write_str(" ")?;
self.text_decoration_thickness.to_css(dest)?;
}
if !is_auto_thickness {
if has_value {
dest.write_str(" ")?;
}
self.text_decoration_thickness.to_css(dest)?;
}
% endif

Ok(())

0 comments on commit eb8195d

Please sign in to comment.
You can’t perform that action at this time.