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
This commit is contained in:
Emilio Cobos Álvarez 2017-05-10 17:24:57 -05:00
Родитель 0ecd336ddf
Коммит b99b76b842
2 изменённых файлов: 24 добавлений и 1 удалений

Просмотреть файл

@ -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)}

Просмотреть файл

@ -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 <div align="right"><table>...</table></div> 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")]