diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-01-14 08:27:14 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-14 08:27:14 -0600 |
commit | 1b46e2e7597e90a41c6bfb3bd7008bdd922c93c6 (patch) | |
tree | 685573e41a1136c0e958a8f2896219b5516c080b | |
parent | 73cb6d415e026cb06f0dc2df1f9f4c803cdf6020 (diff) | |
parent | 0291a75b3c405fc272041878b03e988921c9737c (diff) | |
download | servo-1b46e2e7597e90a41c6bfb3bd7008bdd922c93c6.tar.gz servo-1b46e2e7597e90a41c6bfb3bd7008bdd922c93c6.zip |
Auto merge of #19709 - CYBAI:servo-display-out-of-mako, r=emilio
style: Remove -servo-display-for-hypothetical-box from longhand
This is a sub-PR of #19015
r? emilio
For the `fn set_original_display` inside `properties.mako.rs`, I removed `is_item_or_root` first to see how the tests result is. If it's needed, I'll add it back.
---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #19697
- [x] These changes do not require tests
<!-- 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/19709)
<!-- Reviewable:end -->
-rw-r--r-- | components/layout/construct.rs | 2 | ||||
-rw-r--r-- | components/style/properties/gecko.mako.rs | 34 | ||||
-rw-r--r-- | components/style/properties/longhand/box.mako.rs | 21 | ||||
-rw-r--r-- | components/style/properties/properties.mako.rs | 62 | ||||
-rw-r--r-- | components/style/values/specified/box.rs | 1 |
5 files changed, 64 insertions, 56 deletions
diff --git a/components/layout/construct.rs b/components/layout/construct.rs index 8efeeb97e83..f369d41daaf 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -1485,7 +1485,7 @@ impl<'a, ConcreteThreadSafeLayoutNode> PostorderNodeMutTraversal<ConcreteThreadS } Some(LayoutNodeType::Element(_)) => { let style = node.style(self.style_context()); - let original_display = style.get_box()._servo_display_for_hypothetical_box; + let original_display = style.get_box().original_display; let munged_display = match original_display { Display::Inline | Display::InlineBlock => original_display, _ => style.get_box().display, diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index bb67759a554..e74c2f6fd1f 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -3113,33 +3113,23 @@ fn static_assert() { gecko_enum_prefix="StyleDisplay", gecko_strip_moz_prefix=False) %> - pub fn set_display(&mut self, v: longhands::display::computed_value::T) { + fn match_display_keyword( + v: longhands::display::computed_value::T + ) -> structs::root::mozilla::StyleDisplay { use properties::longhands::display::computed_value::T as Keyword; // FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts - let result = match v { + match v { % for value in display_keyword.values_for('gecko'): Keyword::${to_camel_case(value)} => structs::${display_keyword.gecko_constant(value)}, % endfor - }; - self.gecko.mDisplay = result; - self.gecko.mOriginalDisplay = result; + } } - /// Set the display value from the style adjustment code. This is pretty - /// much like set_display, but without touching the mOriginalDisplay field, - /// which we want to keep. - pub fn set_adjusted_display(&mut self, - v: longhands::display::computed_value::T, - _is_item_or_root: bool) { - use properties::longhands::display::computed_value::T as Keyword; - let result = match v { - % for value in display_keyword.values_for('gecko'): - Keyword::${to_camel_case(value)} => - structs::${display_keyword.gecko_constant(value)}, - % endfor - }; + pub fn set_display(&mut self, v: longhands::display::computed_value::T) { + let result = Self::match_display_keyword(v); self.gecko.mDisplay = result; + self.gecko.mOriginalDisplay = result; } pub fn copy_display_from(&mut self, other: &Self) { @@ -3151,6 +3141,14 @@ fn static_assert() { self.copy_display_from(other) } + pub fn set_adjusted_display( + &mut self, + v: longhands::display::computed_value::T, + _is_item_or_root: bool + ) { + self.gecko.mDisplay = Self::match_display_keyword(v); + } + <%call expr="impl_keyword_clone('display', 'mDisplay', display_keyword)"></%call> <% overflow_x = data.longhands_by_name["overflow-x"] %> diff --git a/components/style/properties/longhand/box.mako.rs b/components/style/properties/longhand/box.mako.rs index 2810f5a513b..62dea66052d 100644 --- a/components/style/properties/longhand/box.mako.rs +++ b/components/style/properties/longhand/box.mako.rs @@ -161,27 +161,6 @@ ${helpers.single_keyword("position", "static absolute relative fixed sticky", } </%helpers:single_keyword_computed> -<%helpers:longhand name="-servo-display-for-hypothetical-box" - animation_value_type="none" - derived_from="display" - products="servo" - spec="Internal (not web-exposed)"> - pub use super::display::{SpecifiedValue, get_initial_value}; - pub use super::display::{parse}; - - pub mod computed_value { - pub type T = super::SpecifiedValue; - } - - #[inline] - pub fn derive_from_display(context: &mut Context) { - let d = context.style().get_box().clone_display(); - context.builder.set__servo_display_for_hypothetical_box(d); - } - -</%helpers:longhand> - - ${helpers.predefined_type( "vertical-align", "VerticalAlign", diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index 3bca3b05939..c75fd6db958 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -1863,6 +1863,11 @@ pub mod style_structs { /// The font hash, used for font caching. pub hash: u64, % endif + % if style_struct.name == "Box": + /// The display value specified by the CSS stylesheets (without any style adjustments), + /// which is needed for hypothetical layout boxes. + pub original_display: longhands::display::computed_value::T, + % endif } % if style_struct.name == "Font": @@ -1893,6 +1898,17 @@ pub mod style_structs { self.${longhand.ident} = longhands::${longhand.ident}::computed_value ::T(v.into_iter().collect()); } + % elif longhand.ident == "display": + /// Set `display`. + /// + /// We need to keep track of the original display for hypothetical boxes, + /// so we need to special-case this. + #[allow(non_snake_case)] + #[inline] + pub fn set_display(&mut self, v: longhands::display::computed_value::T) { + self.display = v; + self.original_display = v; + } % else: /// Set ${longhand.name}. #[allow(non_snake_case)] @@ -1901,13 +1917,25 @@ pub mod style_structs { self.${longhand.ident} = v; } % endif - /// Set ${longhand.name} from other struct. - #[allow(non_snake_case)] - #[inline] - pub fn copy_${longhand.ident}_from(&mut self, other: &Self) { - self.${longhand.ident} = other.${longhand.ident}.clone(); - } - + % if longhand.ident == "display": + /// Set `display` from other struct. + /// + /// Same as `set_display` above. + /// Thus, we need to special-case this. + #[allow(non_snake_case)] + #[inline] + pub fn copy_display_from(&mut self, other: &Self) { + self.display = other.display.clone(); + self.original_display = other.display.clone(); + } + % else: + /// Set ${longhand.name} from other struct. + #[allow(non_snake_case)] + #[inline] + pub fn copy_${longhand.ident}_from(&mut self, other: &Self) { + self.${longhand.ident} = other.${longhand.ident}.clone(); + } + % endif /// Reset ${longhand.name} from the initial struct. #[allow(non_snake_case)] #[inline] @@ -2002,15 +2030,16 @@ pub mod style_structs { self.text_decoration_line.contains(longhands::text_decoration_line::SpecifiedValue::LINE_THROUGH) } % elif style_struct.name == "Box": - /// Sets the display property, but without touching - /// __servo_display_for_hypothetical_box, except when the - /// adjustment comes from root or item display fixups. - pub fn set_adjusted_display(&mut self, - dpy: longhands::display::computed_value::T, - is_item_or_root: bool) { - self.set_display(dpy); + /// Sets the display property, but without touching original_display, + /// except when the adjustment comes from root or item display fixups. + pub fn set_adjusted_display( + &mut self, + dpy: longhands::display::computed_value::T, + is_item_or_root: bool + ) { + self.display = dpy; if is_item_or_root { - self.set__servo_display_for_hypothetical_box(dpy); + self.original_display = dpy; } } % endif @@ -3048,6 +3077,9 @@ mod lazy_static_module { % if style_struct.name == "Font": hash: 0, % endif + % if style_struct.name == "Box": + original_display: longhands::display::get_initial_value(), + % endif }), % endfor custom_properties: None, diff --git a/components/style/values/specified/box.rs b/components/style/values/specified/box.rs index 1ba23a2c9b5..a141855d62f 100644 --- a/components/style/values/specified/box.rs +++ b/components/style/values/specified/box.rs @@ -228,7 +228,6 @@ impl Display { _declaration: &PropertyDeclaration, context: &mut Context ) { - longhands::_servo_display_for_hypothetical_box::derive_from_display(context); longhands::_servo_text_decorations_in_effect::derive_from_display(context); } } |