mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
style: Add GETCS_NEEDS_LAYOUT_FLUSH flag in Servo side and propagate it to ServoCSSPropList.h.
Bug: 1454830 Reviewed-by: emilio MozReview-Commit-ID: 5k08FWjobCg
This commit is contained in:
parent
cfffff33a0
commit
bc81f09833
8 changed files with 152 additions and 98 deletions
|
@ -43,7 +43,8 @@
|
|||
needs_context=False,
|
||||
)}
|
||||
|
||||
${helpers.predefined_type("border-%s-width" % side_name,
|
||||
${helpers.predefined_type(
|
||||
"border-%s-width" % side_name,
|
||||
"BorderSideWidth",
|
||||
"::values::computed::NonNegativeLength::new(3.)",
|
||||
computed_type="::values::computed::NonNegativeLength",
|
||||
|
@ -51,9 +52,10 @@
|
|||
spec=maybe_logical_spec(side, "width"),
|
||||
animation_value_type="NonNegativeLength",
|
||||
logical=is_logical,
|
||||
flags="APPLIES_TO_FIRST_LETTER",
|
||||
flags="APPLIES_TO_FIRST_LETTER GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
allow_quirks=not is_logical,
|
||||
servo_restyle_damage = "reflow rebuild_and_reflow_inline")}
|
||||
servo_restyle_damage="reflow rebuild_and_reflow_inline"
|
||||
)}
|
||||
% endfor
|
||||
|
||||
${helpers.gecko_keyword_conversion(Keyword('border-style',
|
||||
|
|
|
@ -403,14 +403,17 @@ ${helpers.predefined_type(
|
|||
|
||||
<% transform_extra_prefixes = "moz:layout.css.prefixes.transforms webkit" %>
|
||||
|
||||
${helpers.predefined_type("transform", "Transform",
|
||||
${helpers.predefined_type(
|
||||
"transform",
|
||||
"Transform",
|
||||
"generics::transform::Transform::none()",
|
||||
extra_prefixes=transform_extra_prefixes,
|
||||
animation_value_type="ComputedValue",
|
||||
gecko_ffi_name="mSpecifiedTransform",
|
||||
flags="CREATES_STACKING_CONTEXT FIXPOS_CB",
|
||||
flags="CREATES_STACKING_CONTEXT FIXPOS_CB GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
spec="https://drafts.csswg.org/css-transforms/#propdef-transform",
|
||||
servo_restyle_damage = "reflow_out_of_flow")}
|
||||
servo_restyle_damage="reflow_out_of_flow"
|
||||
)}
|
||||
|
||||
${helpers.predefined_type("rotate", "Rotate",
|
||||
"generics::transform::Rotate::None",
|
||||
|
@ -430,14 +433,17 @@ ${helpers.predefined_type("scale", "Scale",
|
|||
spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms",
|
||||
servo_restyle_damage = "reflow_out_of_flow")}
|
||||
|
||||
${helpers.predefined_type("translate", "Translate",
|
||||
${helpers.predefined_type(
|
||||
"translate",
|
||||
"Translate",
|
||||
"generics::transform::Translate::None",
|
||||
animation_value_type="ComputedValue",
|
||||
boxed=True,
|
||||
flags="CREATES_STACKING_CONTEXT FIXPOS_CB",
|
||||
flags="CREATES_STACKING_CONTEXT FIXPOS_CB GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
gecko_pref="layout.css.individual-transform.enabled",
|
||||
spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms",
|
||||
servo_restyle_damage = "reflow_out_of_flow")}
|
||||
servo_restyle_damage="reflow_out_of_flow"
|
||||
)}
|
||||
|
||||
// CSSOM View Module
|
||||
// https://www.w3.org/TR/cssom-view-1/
|
||||
|
@ -529,14 +535,17 @@ ${helpers.predefined_type(
|
|||
servo_restyle_damage = "reflow_out_of_flow",
|
||||
)}
|
||||
|
||||
${helpers.predefined_type("perspective-origin",
|
||||
${helpers.predefined_type(
|
||||
"perspective-origin",
|
||||
"position::Position",
|
||||
"computed::position::Position::center()",
|
||||
boxed=True,
|
||||
extra_prefixes=transform_extra_prefixes,
|
||||
spec="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property",
|
||||
flags="GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
animation_value_type="ComputedValue",
|
||||
servo_restyle_damage = "reflow_out_of_flow")}
|
||||
servo_restyle_damage="reflow_out_of_flow"
|
||||
)}
|
||||
|
||||
${helpers.single_keyword("backface-visibility",
|
||||
"visible hidden",
|
||||
|
@ -565,15 +574,18 @@ ${helpers.predefined_type(
|
|||
servo_restyle_damage = "reflow_out_of_flow",
|
||||
)}
|
||||
|
||||
${helpers.predefined_type("transform-origin",
|
||||
${helpers.predefined_type(
|
||||
"transform-origin",
|
||||
"TransformOrigin",
|
||||
"computed::TransformOrigin::initial_value()",
|
||||
animation_value_type="ComputedValue",
|
||||
extra_prefixes=transform_extra_prefixes,
|
||||
gecko_ffi_name="mTransformOrigin",
|
||||
boxed=True,
|
||||
flags="GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
spec="https://drafts.csswg.org/css-transforms/#transform-origin-property",
|
||||
servo_restyle_damage = "reflow_out_of_flow")}
|
||||
servo_restyle_damage="reflow_out_of_flow"
|
||||
)}
|
||||
|
||||
${helpers.predefined_type("contain",
|
||||
"Contain",
|
||||
|
|
|
@ -6,13 +6,16 @@
|
|||
<% from data import Keyword %>
|
||||
<% data.new_style_struct("InheritedText", inherited=True, gecko_name="Text") %>
|
||||
|
||||
${helpers.predefined_type("line-height",
|
||||
${helpers.predefined_type(
|
||||
"line-height",
|
||||
"LineHeight",
|
||||
"computed::LineHeight::normal()",
|
||||
animation_value_type="LineHeight",
|
||||
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER",
|
||||
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE \
|
||||
APPLIES_TO_PLACEHOLDER GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
spec="https://drafts.csswg.org/css2/visudet.html#propdef-line-height",
|
||||
servo_restyle_damage = "reflow")}
|
||||
servo_restyle_damage="reflow"
|
||||
)}
|
||||
|
||||
// CSS Text Module Level 3
|
||||
|
||||
|
|
|
@ -12,12 +12,17 @@
|
|||
if side[1]:
|
||||
spec = "https://drafts.csswg.org/css-logical-props/#propdef-margin-%s" % side[1]
|
||||
%>
|
||||
${helpers.predefined_type("margin-%s" % side[0], "LengthOrPercentageOrAuto",
|
||||
${helpers.predefined_type(
|
||||
"margin-%s" % side[0],
|
||||
"LengthOrPercentageOrAuto",
|
||||
"computed::LengthOrPercentageOrAuto::Length(computed::Length::new(0.))",
|
||||
alias=maybe_moz_logical_alias(product, side, "-moz-margin-%s"),
|
||||
allow_quirks=not side[1],
|
||||
animation_value_type="ComputedValue", logical = side[1], spec = spec,
|
||||
flags="APPLIES_TO_FIRST_LETTER",
|
||||
animation_value_type="ComputedValue",
|
||||
logical=side[1],
|
||||
spec=spec,
|
||||
flags="APPLIES_TO_FIRST_LETTER GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
allowed_in_page_rule=True,
|
||||
servo_restyle_damage = "reflow")}
|
||||
servo_restyle_damage="reflow"
|
||||
)}
|
||||
% endfor
|
||||
|
|
|
@ -14,13 +14,16 @@
|
|||
if side[1]:
|
||||
spec = "https://drafts.csswg.org/css-logical-props/#propdef-padding-%s" % side[1]
|
||||
%>
|
||||
${helpers.predefined_type("padding-%s" % side[0], "NonNegativeLengthOrPercentage",
|
||||
${helpers.predefined_type(
|
||||
"padding-%s" % side[0],
|
||||
"NonNegativeLengthOrPercentage",
|
||||
"computed::NonNegativeLengthOrPercentage::zero()",
|
||||
alias=maybe_moz_logical_alias(product, side, "-moz-padding-%s"),
|
||||
animation_value_type="NonNegativeLengthOrPercentage",
|
||||
logical = side[1],
|
||||
spec = spec,
|
||||
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_PLACEHOLDER",
|
||||
logical=side[1],
|
||||
spec=spec,
|
||||
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_PLACEHOLDER GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
allow_quirks=not side[1],
|
||||
servo_restyle_damage = "reflow rebuild_and_reflow_inline")}
|
||||
servo_restyle_damage="reflow rebuild_and_reflow_inline"
|
||||
)}
|
||||
% endfor
|
||||
|
|
|
@ -10,18 +10,28 @@
|
|||
|
||||
// "top" / "left" / "bottom" / "right"
|
||||
% for side in PHYSICAL_SIDES:
|
||||
${helpers.predefined_type(side, "LengthOrPercentageOrAuto",
|
||||
${helpers.predefined_type(
|
||||
side,
|
||||
"LengthOrPercentageOrAuto",
|
||||
"computed::LengthOrPercentageOrAuto::Auto",
|
||||
spec="https://www.w3.org/TR/CSS2/visuren.html#propdef-%s" % side,
|
||||
flags="GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
animation_value_type="ComputedValue",
|
||||
allow_quirks=True, servo_restyle_damage = "reflow_out_of_flow")}
|
||||
allow_quirks=True,
|
||||
servo_restyle_damage="reflow_out_of_flow"
|
||||
)}
|
||||
% endfor
|
||||
// offset-* logical properties, map to "top" / "left" / "bottom" / "right"
|
||||
% for side in LOGICAL_SIDES:
|
||||
${helpers.predefined_type("offset-%s" % side, "LengthOrPercentageOrAuto",
|
||||
${helpers.predefined_type(
|
||||
"offset-%s" % side,
|
||||
"LengthOrPercentageOrAuto",
|
||||
"computed::LengthOrPercentageOrAuto::Auto",
|
||||
spec="https://drafts.csswg.org/css-logical-props/#propdef-offset-%s" % side,
|
||||
animation_value_type="ComputedValue", logical=True)}
|
||||
flags="GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
animation_value_type="ComputedValue",
|
||||
logical=True,
|
||||
)}
|
||||
% endfor
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
|
@ -213,7 +223,8 @@ ${helpers.predefined_type(
|
|||
allow_quirks=not logical,
|
||||
spec=spec % size,
|
||||
animation_value_type="MozLength",
|
||||
servo_restyle_damage = "reflow"
|
||||
flags="GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
servo_restyle_damage="reflow"
|
||||
)}
|
||||
// min-width, min-height, min-block-size, min-inline-size,
|
||||
${helpers.predefined_type(
|
||||
|
@ -318,13 +329,16 @@ ${helpers.predefined_type("object-position",
|
|||
products="gecko",
|
||||
boxed=True)}
|
||||
|
||||
${helpers.predefined_type("grid-template-%ss" % kind,
|
||||
${helpers.predefined_type(
|
||||
"grid-template-%ss" % kind,
|
||||
"GridTemplateComponent",
|
||||
"specified::GenericGridTemplateComponent::None",
|
||||
products="gecko",
|
||||
spec="https://drafts.csswg.org/css-grid/#propdef-grid-template-%ss" % kind,
|
||||
boxed=True,
|
||||
animation_value_type="discrete")}
|
||||
flags="GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
animation_value_type="discrete"
|
||||
)}
|
||||
|
||||
% endfor
|
||||
|
||||
|
|
|
@ -48,21 +48,29 @@ ${helpers.predefined_type("-moz-window-opacity", "Opacity", "1.0", products="gec
|
|||
spec="None (Nonstandard internal property)")}
|
||||
|
||||
// TODO(bug 1419695) This should be hidden from content.
|
||||
${helpers.predefined_type("-moz-window-transform", "Transform",
|
||||
${helpers.predefined_type(
|
||||
"-moz-window-transform",
|
||||
"Transform",
|
||||
"generics::transform::Transform::none()",
|
||||
products="gecko", gecko_ffi_name="mSpecifiedWindowTransform",
|
||||
products="gecko",
|
||||
gecko_ffi_name="mSpecifiedWindowTransform",
|
||||
flags="GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
animation_value_type="ComputedValue",
|
||||
spec="None (Nonstandard internal property)")}
|
||||
spec="None (Nonstandard internal property)"
|
||||
)}
|
||||
|
||||
// TODO(bug 1419695) This should be hidden from content.
|
||||
${helpers.predefined_type("-moz-window-transform-origin",
|
||||
${helpers.predefined_type(
|
||||
"-moz-window-transform-origin",
|
||||
"TransformOrigin",
|
||||
"computed::TransformOrigin::initial_value()",
|
||||
animation_value_type="ComputedValue",
|
||||
gecko_ffi_name="mWindowTransformOrigin",
|
||||
products="gecko",
|
||||
boxed=True,
|
||||
spec="None (Nonstandard internal property)")}
|
||||
flags="GETCS_NEEDS_LAYOUT_FLUSH",
|
||||
spec="None (Nonstandard internal property)"
|
||||
)}
|
||||
|
||||
// TODO(emilio): Probably also should be hidden from content.
|
||||
${helpers.predefined_type("-moz-force-broken-image-icon",
|
||||
|
|
|
@ -781,6 +781,13 @@ bitflags! {
|
|||
const APPLIES_TO_FIRST_LINE = 1 << 4;
|
||||
/// This longhand property applies to ::placeholder.
|
||||
const APPLIES_TO_PLACEHOLDER = 1 << 5;
|
||||
|
||||
/* The following flags are currently not used in Rust code, they
|
||||
* only need to be listed in corresponding properties so that
|
||||
* they can be checked in the C++ side via ServoCSSPropList.h. */
|
||||
/// This property's getComputedStyle implementation requires layout
|
||||
/// to be flushed.
|
||||
const GETCS_NEEDS_LAYOUT_FLUSH = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue