aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-01-14 08:27:14 -0600
committerGitHub <noreply@github.com>2018-01-14 08:27:14 -0600
commit1b46e2e7597e90a41c6bfb3bd7008bdd922c93c6 (patch)
tree685573e41a1136c0e958a8f2896219b5516c080b
parent73cb6d415e026cb06f0dc2df1f9f4c803cdf6020 (diff)
parent0291a75b3c405fc272041878b03e988921c9737c (diff)
downloadservo-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.rs2
-rw-r--r--components/style/properties/gecko.mako.rs34
-rw-r--r--components/style/properties/longhand/box.mako.rs21
-rw-r--r--components/style/properties/properties.mako.rs62
-rw-r--r--components/style/values/specified/box.rs1
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);
}
}