Skip to content

Commit

Permalink
Auto merge of #19709 - CYBAI:servo-display-out-of-mako, r=emilio
Browse files Browse the repository at this point in the history
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 -->
  • Loading branch information
bors-servo committed Jan 10, 2018
2 parents ad622a4 + b5133cf commit 730ff59
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 55 deletions.
2 changes: 1 addition & 1 deletion components/layout/construct.rs
Expand Up @@ -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,
Expand Down
34 changes: 16 additions & 18 deletions components/style/properties/gecko.mako.rs
Expand Up @@ -3114,33 +3114,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) {
Expand All @@ -3152,6 +3142,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"] %>
Expand Down
21 changes: 0 additions & 21 deletions components/style/properties/longhand/box.mako.rs
Expand Up @@ -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",
Expand Down
60 changes: 46 additions & 14 deletions components/style/properties/properties.mako.rs
Expand Up @@ -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":

Expand Down Expand Up @@ -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)]
Expand All @@ -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]
Expand Down Expand Up @@ -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) {
/// 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.set_display(dpy);
if is_item_or_root {
self.set__servo_display_for_hypothetical_box(dpy);
self.original_display = dpy;
}
}
% endif
Expand Down Expand Up @@ -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,
Expand Down
1 change: 0 additions & 1 deletion components/style/values/specified/box.rs
Expand Up @@ -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);
}
}
Expand Down

0 comments on commit 730ff59

Please sign in to comment.