diff --git a/components/style/properties/helpers.mako.rs b/components/style/properties/helpers.mako.rs index b4e4d59cbed..53b985eeda7 100644 --- a/components/style/properties/helpers.mako.rs +++ b/components/style/properties/helpers.mako.rs @@ -206,11 +206,17 @@ } _ => panic!("entered the wrong cascade_property() implementation"), }; + + % if property.logical: + let wm = context.style.writing_mode; + % endif + <% maybe_wm = "wm" if property.logical else "" %> + <% maybe_physical = "_physical" if property.logical else "" %> % if not property.derived_from: - if seen.get_${property.ident}() { + if seen.get${maybe_physical}_${property.ident}(${maybe_wm}) { return } - seen.set_${property.ident}(); + seen.set${maybe_physical}_${property.ident}(${maybe_wm}); { let custom_props = context.style().custom_properties(); ::properties::substitute_variables_${property.ident}( @@ -220,9 +226,6 @@ cascade_info.on_cascade_property(&declaration, &value); } - % if property.logical: - let wm = context.style.writing_mode; - % endif <% maybe_wm = ", wm" if property.logical else "" %> match *value { DeclaredValue::Value(ref specified_value) => { diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index 343842b468c..7eb725cfe9e 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -150,6 +150,7 @@ pub mod animated_properties { // TODO(SimonSapin): Convert this to a syntax extension rather than a Mako template. // Maybe submit for inclusion in libstd? mod property_bit_field { + use logical_geometry::WritingMode; pub struct PropertyBitField { storage: [u32; (${len(data.longhands)} - 1 + 32) / 32] @@ -182,6 +183,24 @@ mod property_bit_field { self.set(${i}) } % endif + % if property.logical: + #[allow(non_snake_case)] + pub fn get_physical_${property.ident}(&self, wm: WritingMode) -> bool { + <%helpers:logical_setter_helper name="${property.name}"> + <%def name="inner(physical_ident)"> + self.get_${physical_ident}() + + + } + #[allow(non_snake_case)] + pub fn set_physical_${property.ident}(&mut self, wm: WritingMode) { + <%helpers:logical_setter_helper name="${property.name}"> + <%def name="inner(physical_ident)"> + self.set_${physical_ident}() + + + } + % endif % endfor } }