mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
style: Add a comment about the weird setup for justify-items.
And derive ToCss while at it.
This commit is contained in:
parent
17b5a8332b
commit
a5fc724349
1 changed files with 20 additions and 12 deletions
|
@ -6,8 +6,6 @@
|
||||||
//!
|
//!
|
||||||
//! https://drafts.csswg.org/css-align/
|
//! https://drafts.csswg.org/css-align/
|
||||||
|
|
||||||
use std::fmt;
|
|
||||||
use style_traits::{CssWriter, ToCss};
|
|
||||||
use values::computed::{Context, ToComputedValue};
|
use values::computed::{Context, ToComputedValue};
|
||||||
use values::specified;
|
use values::specified;
|
||||||
|
|
||||||
|
@ -17,23 +15,33 @@ pub use super::specified::{AlignSelf, JustifySelf};
|
||||||
/// The computed value for the `justify-items` property.
|
/// The computed value for the `justify-items` property.
|
||||||
///
|
///
|
||||||
/// Need to carry around both the specified and computed value to handle the
|
/// Need to carry around both the specified and computed value to handle the
|
||||||
/// special legacy keyword. Sigh.
|
/// special legacy keyword without destroying style sharing.
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
///
|
||||||
|
/// In particular, `justify-items` is a reset property, so we ought to be able
|
||||||
|
/// to share its computed representation across elements as long as they match
|
||||||
|
/// the same rules. Except that it's not true if the specified value for
|
||||||
|
/// `justify-items` is `auto` and the computed value of the parent has the
|
||||||
|
/// `legacy` modifier.
|
||||||
|
///
|
||||||
|
/// So instead of computing `auto` "normally" looking at get_parent_position(),
|
||||||
|
/// marking it as uncacheable, we carry the specified value around and handle
|
||||||
|
/// the special case in `StyleAdjuster` instead, only when the result of the
|
||||||
|
/// computation would vary.
|
||||||
|
///
|
||||||
|
/// Note that we also need to special-case this property in matching.rs, in
|
||||||
|
/// order to properly handle changes to the legacy keyword... This all kinda
|
||||||
|
/// sucks :(.
|
||||||
|
///
|
||||||
|
/// See the discussion in https://bugzil.la/1384542.
|
||||||
|
#[derive(Clone, Copy, Debug, Eq, PartialEq, ToCss)]
|
||||||
pub struct JustifyItems {
|
pub struct JustifyItems {
|
||||||
/// The specified value for the property. Can contain `auto`.
|
/// The specified value for the property. Can contain `auto`.
|
||||||
|
#[css(skip)]
|
||||||
pub specified: specified::JustifyItems,
|
pub specified: specified::JustifyItems,
|
||||||
/// The computed value for the property. Cannot contain `auto`.
|
/// The computed value for the property. Cannot contain `auto`.
|
||||||
pub computed: specified::JustifyItems,
|
pub computed: specified::JustifyItems,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ToCss for JustifyItems {
|
|
||||||
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
|
|
||||||
where W: fmt::Write,
|
|
||||||
{
|
|
||||||
self.computed.to_css(dest)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl JustifyItems {
|
impl JustifyItems {
|
||||||
/// Returns the `auto` value.
|
/// Returns the `auto` value.
|
||||||
pub fn auto() -> Self {
|
pub fn auto() -> Self {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue