From b99b76b842fcdaed59bd0849d7a93a579914d929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 10 May 2017 17:24:57 -0500 Subject: [PATCH] servo: Merge #16794 - style: Adjust text-align properly for -moz- values in tables (from emilio:table-text-fixup); r=Manishearth Fixes bug 1363576. Source-Repo: https://github.com/servo/servo Source-Revision: 15f3db5abf5adbf4c85b66b877b8ffa3aaeea666 --HG-- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : 837f45093a85997998cbbea2d32e6e578dea44b9 --- .../components/style/properties/gecko.mako.rs | 1 - servo/components/style/style_adjuster.rs | 24 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/servo/components/style/properties/gecko.mako.rs b/servo/components/style/properties/gecko.mako.rs index 0df847cfd954..4271b424bf11 100644 --- a/servo/components/style/properties/gecko.mako.rs +++ b/servo/components/style/properties/gecko.mako.rs @@ -3383,7 +3383,6 @@ fn static_assert() { <% text_align_keyword = Keyword("text-align", "start end left right center justify -moz-center -moz-left -moz-right char", gecko_strip_moz_prefix=False) %> - <% text_align_reachable_keyword = Keyword("text-align", "start end left right center justify char") %> ${impl_keyword('text_align', 'mTextAlign', text_align_keyword, need_clone=False)} ${impl_keyword_clone('text_align', 'mTextAlign', text_align_keyword)} diff --git a/servo/components/style/style_adjuster.rs b/servo/components/style/style_adjuster.rs index b8a71b223d7c..78d44c8007e0 100644 --- a/servo/components/style/style_adjuster.rs +++ b/servo/components/style/style_adjuster.rs @@ -259,6 +259,29 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { } } + /// -moz-center, -moz-left and -moz-right are used for HTML's alignment. + /// + /// This is covering the
...
case. + /// + /// In this case, we don't want to inherit the text alignment into the + /// table. + #[cfg(feature = "gecko")] + fn adjust_for_table_text_align(&mut self) { + use properties::longhands::text_align::computed_value::T as text_align; + if self.style.get_box().clone_display() != display::table { + return; + } + + match self.style.get_inheritedtext().clone_text_align() { + text_align::_moz_left | + text_align::_moz_center | + text_align::_moz_right => {} + _ => return, + } + + self.style.mutate_inheritedtext().set_text_align(text_align::start); + } + /// Adjusts the style to account for various fixups that don't fit naturally /// into the cascade. /// @@ -274,6 +297,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { self.adjust_for_overflow(); #[cfg(feature = "gecko")] { + self.adjust_for_table_text_align(); self.adjust_for_contain(); } #[cfg(feature = "servo")]