mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
style: Implement the counter-set property.
Bug: 1518201 Reviewed-by: emilio
This commit is contained in:
parent
14b176019c
commit
4b4b5b6a1d
7 changed files with 27 additions and 18 deletions
|
@ -4559,7 +4559,7 @@ clip-path
|
|||
</%self:impl_trait>
|
||||
|
||||
<%self:impl_trait style_struct_name="Counters"
|
||||
skip_longhands="content counter-increment counter-reset">
|
||||
skip_longhands="content counter-increment counter-reset counter-set">
|
||||
pub fn ineffective_content_property(&self) -> bool {
|
||||
self.gecko.mContents.is_empty()
|
||||
}
|
||||
|
@ -4788,7 +4788,7 @@ clip-path
|
|||
)
|
||||
}
|
||||
|
||||
% for counter_property in ["Increment", "Reset"]:
|
||||
% for counter_property in ["Increment", "Reset", "Set"]:
|
||||
pub fn set_counter_${counter_property.lower()}(
|
||||
&mut self,
|
||||
v: longhands::counter_${counter_property.lower()}::computed_value::T
|
||||
|
|
|
@ -27,9 +27,18 @@ ${helpers.predefined_type(
|
|||
|
||||
${helpers.predefined_type(
|
||||
"counter-reset",
|
||||
"CounterReset",
|
||||
"CounterSetOrReset",
|
||||
initial_value="Default::default()",
|
||||
animation_value_type="discrete",
|
||||
spec="https://drafts.csswg.org/css-lists-3/#propdef-counter-reset",
|
||||
servo_restyle_damage="rebuild_and_reflow",
|
||||
)}
|
||||
|
||||
${helpers.predefined_type(
|
||||
"counter-set",
|
||||
"CounterSetOrReset",
|
||||
initial_value="Default::default()",
|
||||
animation_value_type="discrete",
|
||||
spec="https://drafts.csswg.org/css-lists-3/#propdef-counter-set",
|
||||
servo_restyle_damage="rebuild_and_reflow",
|
||||
)}
|
||||
|
|
|
@ -7,13 +7,13 @@
|
|||
use crate::values::computed::url::ComputedImageUrl;
|
||||
use crate::values::generics::counters as generics;
|
||||
use crate::values::generics::counters::CounterIncrement as GenericCounterIncrement;
|
||||
use crate::values::generics::counters::CounterReset as GenericCounterReset;
|
||||
use crate::values::generics::counters::CounterSetOrReset as GenericCounterSetOrReset;
|
||||
|
||||
/// A computed value for the `counter-increment` property.
|
||||
pub type CounterIncrement = GenericCounterIncrement<i32>;
|
||||
|
||||
/// A computed value for the `counter-increment` property.
|
||||
pub type CounterReset = GenericCounterReset<i32>;
|
||||
/// A computed value for the `counter-set` and `counter-reset` properties.
|
||||
pub type CounterSetOrReset = GenericCounterSetOrReset<i32>;
|
||||
|
||||
/// A computed value for the `content` property.
|
||||
pub type Content = generics::Content<ComputedImageUrl>;
|
||||
|
|
|
@ -45,7 +45,7 @@ pub use self::box_::{OverflowClipBox, OverscrollBehavior, Perspective, Resize};
|
|||
pub use self::box_::{ScrollSnapAlign, ScrollSnapType, TouchAction, VerticalAlign, WillChange};
|
||||
pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, RGBAColor};
|
||||
pub use self::column::ColumnCount;
|
||||
pub use self::counters::{Content, ContentItem, CounterIncrement, CounterReset};
|
||||
pub use self::counters::{Content, ContentItem, CounterIncrement, CounterSetOrReset};
|
||||
pub use self::easing::TimingFunction;
|
||||
pub use self::effects::{BoxShadow, Filter, SimpleShadow};
|
||||
pub use self::flex::FlexBasis;
|
||||
|
|
|
@ -45,21 +45,21 @@ impl<I> Deref for CounterIncrement<I> {
|
|||
}
|
||||
}
|
||||
|
||||
/// A generic value for the `counter-reset` property.
|
||||
/// A generic value for the `counter-set` and `counter-reset` properties.
|
||||
#[derive(
|
||||
Clone, Debug, Default, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss,
|
||||
)]
|
||||
pub struct CounterReset<I>(Counters<I>);
|
||||
pub struct CounterSetOrReset<I>(Counters<I>);
|
||||
|
||||
impl<I> CounterReset<I> {
|
||||
/// Returns a new value for `counter-reset`.
|
||||
impl<I> CounterSetOrReset<I> {
|
||||
/// Returns a new value for `counter-set` / `counter-reset`.
|
||||
#[inline]
|
||||
pub fn new(counters: Vec<CounterPair<I>>) -> Self {
|
||||
CounterReset(Counters(counters.into_boxed_slice()))
|
||||
CounterSetOrReset(Counters(counters.into_boxed_slice()))
|
||||
}
|
||||
}
|
||||
|
||||
impl<I> Deref for CounterReset<I> {
|
||||
impl<I> Deref for CounterSetOrReset<I> {
|
||||
type Target = [CounterPair<I>];
|
||||
|
||||
#[inline]
|
||||
|
|
|
@ -10,7 +10,7 @@ use crate::parser::{Parse, ParserContext};
|
|||
use crate::values::generics::counters as generics;
|
||||
use crate::values::generics::counters::CounterIncrement as GenericCounterIncrement;
|
||||
use crate::values::generics::counters::CounterPair;
|
||||
use crate::values::generics::counters::CounterReset as GenericCounterReset;
|
||||
use crate::values::generics::counters::CounterSetOrReset as GenericCounterSetOrReset;
|
||||
#[cfg(feature = "gecko")]
|
||||
use crate::values::generics::CounterStyleOrNone;
|
||||
use crate::values::specified::url::SpecifiedImageUrl;
|
||||
|
@ -34,10 +34,10 @@ impl Parse for CounterIncrement {
|
|||
}
|
||||
}
|
||||
|
||||
/// A specified value for the `counter-increment` property.
|
||||
pub type CounterReset = GenericCounterReset<Integer>;
|
||||
/// A specified value for the `counter-set` and `counter-reset` properties.
|
||||
pub type CounterSetOrReset = GenericCounterSetOrReset<Integer>;
|
||||
|
||||
impl Parse for CounterReset {
|
||||
impl Parse for CounterSetOrReset {
|
||||
fn parse<'i, 't>(
|
||||
context: &ParserContext,
|
||||
input: &mut Parser<'i, 't>,
|
||||
|
|
|
@ -44,7 +44,7 @@ pub use self::box_::{ScrollSnapAlign, ScrollSnapType};
|
|||
pub use self::box_::{TouchAction, TransitionProperty, VerticalAlign, WillChange};
|
||||
pub use self::color::{Color, ColorOrAuto, ColorPropertyValue, RGBAColor};
|
||||
pub use self::column::ColumnCount;
|
||||
pub use self::counters::{Content, ContentItem, CounterIncrement, CounterReset};
|
||||
pub use self::counters::{Content, ContentItem, CounterIncrement, CounterSetOrReset};
|
||||
pub use self::easing::TimingFunction;
|
||||
pub use self::effects::{BoxShadow, Filter, SimpleShadow};
|
||||
pub use self::flex::FlexBasis;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue