зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1464786 - Implement flow-relative values for resize property. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D2908 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
48b3246876
Коммит
34de342864
|
@ -7868,10 +7868,12 @@ exports.CSS_PROPERTIES = {
|
||||||
],
|
],
|
||||||
"supports": [],
|
"supports": [],
|
||||||
"values": [
|
"values": [
|
||||||
|
"block",
|
||||||
"both",
|
"both",
|
||||||
"horizontal",
|
"horizontal",
|
||||||
"inherit",
|
"inherit",
|
||||||
"initial",
|
"initial",
|
||||||
|
"inline",
|
||||||
"none",
|
"none",
|
||||||
"unset",
|
"unset",
|
||||||
"vertical"
|
"vertical"
|
||||||
|
|
|
@ -95,6 +95,7 @@ SERIALIZED_PREDEFINED_TYPES = [
|
||||||
"NonNegativeLengthOrPercentage",
|
"NonNegativeLengthOrPercentage",
|
||||||
"ListStyleType",
|
"ListStyleType",
|
||||||
"Opacity",
|
"Opacity",
|
||||||
|
"Resize",
|
||||||
"url::ImageUrlOrNone",
|
"url::ImageUrlOrNone",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -2401,7 +2401,7 @@ var gCSSProperties = {
|
||||||
// No applies_to_placeholder because we have a !important rule in forms.css.
|
// No applies_to_placeholder because we have a !important rule in forms.css.
|
||||||
prerequisites: { "display": "block", "overflow": "auto" },
|
prerequisites: { "display": "block", "overflow": "auto" },
|
||||||
initial_values: [ "none" ],
|
initial_values: [ "none" ],
|
||||||
other_values: [ "both", "horizontal", "vertical" ],
|
other_values: [ "both", "horizontal", "vertical", "inline", "block" ],
|
||||||
invalid_values: []
|
invalid_values: []
|
||||||
},
|
},
|
||||||
"-moz-stack-sizing": {
|
"-moz-stack-sizing": {
|
||||||
|
|
|
@ -325,6 +325,7 @@ class Longhand(object):
|
||||||
"OverflowClipBox",
|
"OverflowClipBox",
|
||||||
"OverscrollBehavior",
|
"OverscrollBehavior",
|
||||||
"Percentage",
|
"Percentage",
|
||||||
|
"Resize",
|
||||||
"SVGOpacity",
|
"SVGOpacity",
|
||||||
"SVGPaintOrder",
|
"SVGPaintOrder",
|
||||||
"ScrollSnapType",
|
"ScrollSnapType",
|
||||||
|
|
|
@ -3106,6 +3106,9 @@ fn static_assert() {
|
||||||
) %>
|
) %>
|
||||||
${impl_keyword('clear', 'mBreakType', clear_keyword)}
|
${impl_keyword('clear', 'mBreakType', clear_keyword)}
|
||||||
|
|
||||||
|
<% resize_keyword = Keyword("resize", "None Both Horizontal Vertical") %>
|
||||||
|
${impl_keyword('resize', 'mResize', resize_keyword)}
|
||||||
|
|
||||||
<% overflow_x = data.longhands_by_name["overflow-x"] %>
|
<% overflow_x = data.longhands_by_name["overflow-x"] %>
|
||||||
pub fn set_overflow_y(&mut self, v: longhands::overflow_y::computed_value::T) {
|
pub fn set_overflow_y(&mut self, v: longhands::overflow_y::computed_value::T) {
|
||||||
use properties::longhands::overflow_x::computed_value::T as BaseType;
|
use properties::longhands::overflow_x::computed_value::T as BaseType;
|
||||||
|
|
|
@ -422,17 +422,21 @@ ${helpers.single_keyword("page-break-inside",
|
||||||
|
|
||||||
// CSS Basic User Interface Module Level 3
|
// CSS Basic User Interface Module Level 3
|
||||||
// http://dev.w3.org/csswg/css-ui
|
// http://dev.w3.org/csswg/css-ui
|
||||||
// FIXME support logical values `block` and `inline` (https://drafts.csswg.org/css-logical-props/#resize)
|
|
||||||
//
|
//
|
||||||
// This is APPLIES_TO_PLACEHOLDER so we can override, in the UA sheet, the
|
// This is APPLIES_TO_PLACEHOLDER so we can override, in the UA sheet, the
|
||||||
// 'resize' property we'd inherit from textarea otherwise. Basically, just
|
// 'resize' property we'd inherit from textarea otherwise. Basically, just
|
||||||
// makes the UA rules easier to write.
|
// makes the UA rules easier to write.
|
||||||
${helpers.single_keyword("resize",
|
${helpers.predefined_type(
|
||||||
"none both horizontal vertical",
|
"resize",
|
||||||
|
"Resize",
|
||||||
|
"computed::Resize::None",
|
||||||
products="gecko",
|
products="gecko",
|
||||||
spec="https://drafts.csswg.org/css-ui/#propdef-resize",
|
animation_value_type="discrete",
|
||||||
|
needs_context=False,
|
||||||
|
gecko_ffi_name="mResize",
|
||||||
flags="APPLIES_TO_PLACEHOLDER",
|
flags="APPLIES_TO_PLACEHOLDER",
|
||||||
animation_value_type="discrete")}
|
spec="https://drafts.csswg.org/css-ui/#propdef-resize",
|
||||||
|
)}
|
||||||
|
|
||||||
${helpers.predefined_type(
|
${helpers.predefined_type(
|
||||||
"perspective",
|
"perspective",
|
||||||
|
|
|
@ -9,6 +9,7 @@ use values::computed::length::{LengthOrPercentage, NonNegativeLength};
|
||||||
use values::generics::box_::AnimationIterationCount as GenericAnimationIterationCount;
|
use values::generics::box_::AnimationIterationCount as GenericAnimationIterationCount;
|
||||||
use values::generics::box_::Perspective as GenericPerspective;
|
use values::generics::box_::Perspective as GenericPerspective;
|
||||||
use values::generics::box_::VerticalAlign as GenericVerticalAlign;
|
use values::generics::box_::VerticalAlign as GenericVerticalAlign;
|
||||||
|
use values::specified::box_ as specified;
|
||||||
|
|
||||||
pub use values::specified::box_::{AnimationName, Appearance, Contain, Display, OverflowClipBox};
|
pub use values::specified::box_::{AnimationName, Appearance, Contain, Display, OverflowClipBox};
|
||||||
pub use values::specified::box_::{Clear as SpecifiedClear, Float as SpecifiedFloat};
|
pub use values::specified::box_::{Clear as SpecifiedClear, Float as SpecifiedFloat};
|
||||||
|
@ -139,3 +140,57 @@ impl ToComputedValue for SpecifiedClear {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A computed value for the `resize` property.
|
||||||
|
#[allow(missing_docs)]
|
||||||
|
#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
|
||||||
|
#[derive(Clone, Copy, Debug, Eq, Hash, MallocSizeOf, Parse, PartialEq, ToCss)]
|
||||||
|
pub enum Resize {
|
||||||
|
None,
|
||||||
|
Both,
|
||||||
|
Horizontal,
|
||||||
|
Vertical,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToComputedValue for specified::Resize {
|
||||||
|
type ComputedValue = Resize;
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn to_computed_value(&self, context: &Context) -> Resize {
|
||||||
|
let is_vertical = context.style().writing_mode.is_vertical();
|
||||||
|
match self {
|
||||||
|
specified::Resize::Inline => {
|
||||||
|
context.rule_cache_conditions.borrow_mut()
|
||||||
|
.set_writing_mode_dependency(context.builder.writing_mode);
|
||||||
|
if is_vertical {
|
||||||
|
Resize::Vertical
|
||||||
|
} else {
|
||||||
|
Resize::Horizontal
|
||||||
|
}
|
||||||
|
}
|
||||||
|
specified::Resize::Block => {
|
||||||
|
context.rule_cache_conditions.borrow_mut()
|
||||||
|
.set_writing_mode_dependency(context.builder.writing_mode);
|
||||||
|
if is_vertical {
|
||||||
|
Resize::Horizontal
|
||||||
|
} else {
|
||||||
|
Resize::Vertical
|
||||||
|
}
|
||||||
|
}
|
||||||
|
specified::Resize::None => Resize::None,
|
||||||
|
specified::Resize::Both => Resize::Both,
|
||||||
|
specified::Resize::Horizontal => Resize::Horizontal,
|
||||||
|
specified::Resize::Vertical => Resize::Vertical,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn from_computed_value(computed: &Resize) -> specified::Resize {
|
||||||
|
match computed {
|
||||||
|
Resize::None => specified::Resize::None,
|
||||||
|
Resize::Both => specified::Resize::Both,
|
||||||
|
Resize::Horizontal => specified::Resize::Horizontal,
|
||||||
|
Resize::Vertical => specified::Resize::Vertical,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ pub use self::font::{FontFeatureSettings, FontVariantLigatures, FontVariantNumer
|
||||||
pub use self::font::{MozScriptLevel, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom};
|
pub use self::font::{MozScriptLevel, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom};
|
||||||
pub use self::box_::{AnimationIterationCount, AnimationName, Contain, Display, TransitionProperty};
|
pub use self::box_::{AnimationIterationCount, AnimationName, Contain, Display, TransitionProperty};
|
||||||
pub use self::box_::{Appearance, Clear, Float};
|
pub use self::box_::{Appearance, Clear, Float};
|
||||||
pub use self::box_::{OverflowClipBox, OverscrollBehavior, Perspective};
|
pub use self::box_::{OverflowClipBox, OverscrollBehavior, Perspective, Resize};
|
||||||
pub use self::box_::{ScrollSnapType, TouchAction, VerticalAlign, WillChange};
|
pub use self::box_::{ScrollSnapType, TouchAction, VerticalAlign, WillChange};
|
||||||
pub use self::color::{Color, ColorPropertyValue, RGBAColor};
|
pub use self::color::{Color, ColorPropertyValue, RGBAColor};
|
||||||
pub use self::column::ColumnCount;
|
pub use self::column::ColumnCount;
|
||||||
|
|
|
@ -884,6 +884,21 @@ pub enum Clear {
|
||||||
InlineEnd
|
InlineEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// https://drafts.csswg.org/css-ui/#propdef-resize
|
||||||
|
#[allow(missing_docs)]
|
||||||
|
#[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
|
||||||
|
#[derive(Clone, Copy, Debug, Eq, Hash, MallocSizeOf, Parse, PartialEq,
|
||||||
|
SpecifiedValueInfo, ToCss)]
|
||||||
|
pub enum Resize {
|
||||||
|
None,
|
||||||
|
Both,
|
||||||
|
Horizontal,
|
||||||
|
Vertical,
|
||||||
|
// https://drafts.csswg.org/css-logical-1/#resize
|
||||||
|
Inline,
|
||||||
|
Block,
|
||||||
|
}
|
||||||
|
|
||||||
/// The value for the `appearance` property.
|
/// The value for the `appearance` property.
|
||||||
///
|
///
|
||||||
/// https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-appearance
|
/// https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-appearance
|
||||||
|
|
|
@ -39,7 +39,7 @@ pub use self::font::{FontFeatureSettings, FontVariantLigatures, FontVariantNumer
|
||||||
pub use self::font::{MozScriptLevel, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom};
|
pub use self::font::{MozScriptLevel, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom};
|
||||||
pub use self::box_::{AnimationIterationCount, AnimationName, Contain, Display};
|
pub use self::box_::{AnimationIterationCount, AnimationName, Contain, Display};
|
||||||
pub use self::box_::{Appearance, Clear, Float};
|
pub use self::box_::{Appearance, Clear, Float};
|
||||||
pub use self::box_::{OverflowClipBox, OverscrollBehavior, Perspective};
|
pub use self::box_::{OverflowClipBox, OverscrollBehavior, Perspective, Resize};
|
||||||
pub use self::box_::{ScrollSnapType, TouchAction, TransitionProperty, VerticalAlign, WillChange};
|
pub use self::box_::{ScrollSnapType, TouchAction, TransitionProperty, VerticalAlign, WillChange};
|
||||||
pub use self::color::{Color, ColorPropertyValue, RGBAColor};
|
pub use self::color::{Color, ColorPropertyValue, RGBAColor};
|
||||||
pub use self::counters::{Content, ContentItem, CounterIncrement, CounterReset};
|
pub use self::counters::{Content, ContentItem, CounterIncrement, CounterReset};
|
||||||
|
|
Загрузка…
Ссылка в новой задаче