mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Auto merge of #16558 - nox:placement, r=emilio
Properly parse alignment shorthands (fixes #16391) <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/16558) <!-- Reviewable:end -->
This commit is contained in:
commit
e9658bb5b4
2 changed files with 42 additions and 0 deletions
|
@ -249,8 +249,14 @@
|
|||
|
||||
pub fn parse_value(context: &ParserContext, input: &mut Parser) -> Result<Longhands, ()> {
|
||||
let align = align_content::parse(context, input)?;
|
||||
if align.has_extra_flags() {
|
||||
return Err(());
|
||||
}
|
||||
let justify = input.try(|input| justify_content::parse(context, input))
|
||||
.unwrap_or(justify_content::SpecifiedValue::from(align));
|
||||
if justify.has_extra_flags() {
|
||||
return Err(());
|
||||
}
|
||||
|
||||
Ok(Longhands {
|
||||
align_content: align,
|
||||
|
@ -279,7 +285,13 @@
|
|||
|
||||
pub fn parse_value(context: &ParserContext, input: &mut Parser) -> Result<Longhands, ()> {
|
||||
let align = AlignJustifySelf::parse(context, input)?;
|
||||
if align.has_extra_flags() {
|
||||
return Err(());
|
||||
}
|
||||
let justify = input.try(|input| AlignJustifySelf::parse(context, input)).unwrap_or(align.clone());
|
||||
if justify.has_extra_flags() {
|
||||
return Err(());
|
||||
}
|
||||
|
||||
Ok(Longhands {
|
||||
align_self: align,
|
||||
|
@ -314,8 +326,14 @@
|
|||
|
||||
pub fn parse_value(context: &ParserContext, input: &mut Parser) -> Result<Longhands, ()> {
|
||||
let align = AlignItems::parse(context, input)?;
|
||||
if align.has_extra_flags() {
|
||||
return Err(());
|
||||
}
|
||||
let justify = input.try(|input| JustifyItems::parse(context, input))
|
||||
.unwrap_or(JustifyItems::from(align));
|
||||
if justify.has_extra_flags() {
|
||||
return Err(());
|
||||
}
|
||||
|
||||
Ok(Longhands {
|
||||
align_items: align,
|
||||
|
|
|
@ -155,6 +155,12 @@ impl AlignJustifyContent {
|
|||
AlignFlags::from_bits((self.0 >> ALIGN_ALL_SHIFT) as u8)
|
||||
.expect("AlignJustifyContent must contain valid flags")
|
||||
}
|
||||
|
||||
/// Whether this value has extra flags.
|
||||
#[inline]
|
||||
pub fn has_extra_flags(self) -> bool {
|
||||
self.primary().intersects(ALIGN_FLAG_BITS) || self.fallback().intersects(ALIGN_FLAG_BITS)
|
||||
}
|
||||
}
|
||||
|
||||
impl ToCss for AlignJustifyContent {
|
||||
|
@ -213,6 +219,12 @@ impl AlignJustifySelf {
|
|||
pub fn auto() -> Self {
|
||||
AlignJustifySelf(ALIGN_AUTO)
|
||||
}
|
||||
|
||||
/// Whether this value has extra flags.
|
||||
#[inline]
|
||||
pub fn has_extra_flags(self) -> bool {
|
||||
self.0.intersects(ALIGN_FLAG_BITS)
|
||||
}
|
||||
}
|
||||
|
||||
no_viewport_percentage!(AlignJustifySelf);
|
||||
|
@ -251,6 +263,12 @@ impl AlignItems {
|
|||
pub fn normal() -> Self {
|
||||
AlignItems(ALIGN_NORMAL)
|
||||
}
|
||||
|
||||
/// Whether this value has extra flags.
|
||||
#[inline]
|
||||
pub fn has_extra_flags(self) -> bool {
|
||||
self.0.intersects(ALIGN_FLAG_BITS)
|
||||
}
|
||||
}
|
||||
|
||||
no_viewport_percentage!(AlignItems);
|
||||
|
@ -289,6 +307,12 @@ impl JustifyItems {
|
|||
pub fn auto() -> Self {
|
||||
JustifyItems(ALIGN_AUTO)
|
||||
}
|
||||
|
||||
/// Whether this value has extra flags.
|
||||
#[inline]
|
||||
pub fn has_extra_flags(self) -> bool {
|
||||
self.0.intersects(ALIGN_FLAG_BITS)
|
||||
}
|
||||
}
|
||||
|
||||
no_viewport_percentage!(JustifyItems);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue