style: Make vertical writing mode (left/right) in text-emphasis-position optional

Differential Revision: https://phabricator.services.mozilla.com/D158399
This commit is contained in:
Anurag Kalia 2022-10-17 09:28:44 +00:00 committed by Martin Robinson
parent d4742aefb9
commit 4dd841a036
4 changed files with 16 additions and 12 deletions

View file

@ -221,9 +221,9 @@ ${helpers.predefined_type(
${helpers.predefined_type( ${helpers.predefined_type(
"text-emphasis-position", "text-emphasis-position",
"TextEmphasisPosition", "TextEmphasisPosition",
"computed::TextEmphasisPosition::DEFAULT", "computed::TextEmphasisPosition::OVER",
engines="gecko", engines="gecko",
initial_specified_value="specified::TextEmphasisPosition::DEFAULT", initial_specified_value="specified::TextEmphasisPosition::OVER",
animation_value_type="discrete", animation_value_type="discrete",
spec="https://drafts.csswg.org/css-text-decor/#propdef-text-emphasis-position", spec="https://drafts.csswg.org/css-text-decor/#propdef-text-emphasis-position",
)} )}

View file

@ -2242,7 +2242,7 @@ bitflags! {
impl ScrollbarGutter { impl ScrollbarGutter {
#[inline] #[inline]
fn has_stable(self) -> bool { fn has_stable(&self) -> bool {
self.intersects(Self::STABLE) self.intersects(Self::STABLE)
} }
} }

View file

@ -774,7 +774,7 @@ impl Parse for TextEmphasisStyle {
bitflags! { bitflags! {
#[derive(MallocSizeOf, SpecifiedValueInfo, ToComputedValue, ToResolvedValue, ToShmem, Parse, ToCss)] #[derive(MallocSizeOf, SpecifiedValueInfo, ToComputedValue, ToResolvedValue, ToShmem, Parse, ToCss)]
#[repr(C)] #[repr(C)]
#[css(bitflags(mixed="over,under,left,right", validate_mixed="Self::is_valid"))] #[css(bitflags(mixed="over,under,left,right", validate_mixed="Self::validate_and_simplify"))]
/// Values for text-emphasis-position: /// Values for text-emphasis-position:
/// <https://drafts.csswg.org/css-text-decor/#text-emphasis-position-property> /// <https://drafts.csswg.org/css-text-decor/#text-emphasis-position-property>
pub struct TextEmphasisPosition: u8 { pub struct TextEmphasisPosition: u8 {
@ -786,17 +786,21 @@ bitflags! {
const LEFT = 1 << 2; const LEFT = 1 << 2;
/// Draws marks to the right of the text in vertical writing mode. /// Draws marks to the right of the text in vertical writing mode.
const RIGHT = 1 << 3; const RIGHT = 1 << 3;
/// Returns the initial value of `text-emphasis-position`
const DEFAULT = Self::OVER.bits | Self::RIGHT.bits;
/// Non-standard behavior: Intelligent default for zh locale
const DEFAULT_ZH = Self::UNDER.bits | Self::RIGHT.bits;
} }
} }
impl TextEmphasisPosition { impl TextEmphasisPosition {
fn is_valid(self) -> bool { fn validate_and_simplify(&mut self) -> bool {
return self.intersects(Self::LEFT) != self.intersects(Self::RIGHT) && if self.intersects(Self::OVER) == self.intersects(Self::UNDER) {
self.intersects(Self::OVER) != self.intersects(Self::UNDER); return false;
}
if self.intersects(Self::LEFT) {
return !self.intersects(Self::RIGHT);
}
self.remove(Self::RIGHT); // Right is the default
true
} }
} }

View file

@ -47,7 +47,7 @@ fn parse_bitflags(bitflags: &CssBitflagAttrs) -> TokenStream {
let mut validate_condition = quote! { !result.is_empty() }; let mut validate_condition = quote! { !result.is_empty() };
if let Some(ref function) = bitflags.validate_mixed { if let Some(ref function) = bitflags.validate_mixed {
validate_condition.append_all(quote! { validate_condition.append_all(quote! {
&& #function(result) && #function(&mut result)
}); });
} }