mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
style: Dishonor display: -moz-box if -webkit-box was specified before.
Bug: 1407701
This commit is contained in:
parent
25c303ee62
commit
6d694a4bcd
2 changed files with 46 additions and 0 deletions
|
@ -500,6 +500,25 @@ impl PropertyDeclarationBlock {
|
|||
return true;
|
||||
}
|
||||
DeclarationSource::Parsing => {
|
||||
// As a compatibility hack, specially on Android,
|
||||
// don't allow to override a prefixed webkit display
|
||||
// value with an unprefixed version from parsing
|
||||
// code.
|
||||
//
|
||||
// TODO(emilio): Unship.
|
||||
if let PropertyDeclaration::Display(old_display) = *slot {
|
||||
use properties::longhands::display::computed_value::T as display;
|
||||
|
||||
let new_display = match declaration {
|
||||
PropertyDeclaration::Display(new_display) => new_display,
|
||||
_ => unreachable!("How could the declaration id be the same?"),
|
||||
};
|
||||
|
||||
if display::should_ignore_parsed_value(old_display, new_display) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE(emilio): We could avoid this and just override for
|
||||
// properties not affected by logical props, but it's not
|
||||
// clear it's worth it given the `definitely_new` check.
|
||||
|
|
|
@ -68,6 +68,33 @@
|
|||
)
|
||||
}
|
||||
|
||||
/// Whether `new_display` should be ignored, given a previous
|
||||
/// `old_display` value.
|
||||
///
|
||||
/// This is used to ignore `display: -moz-box` declarations after an
|
||||
/// equivalent `display: -webkit-box` declaration, since the former
|
||||
/// has a vastly different meaning. See bug 1107378 and bug 1407701.
|
||||
///
|
||||
/// FIXME(emilio): This is a pretty decent hack, we should try to
|
||||
/// remove it.
|
||||
pub fn should_ignore_parsed_value(
|
||||
_old_display: Self,
|
||||
_new_display: Self,
|
||||
) -> bool {
|
||||
#[cfg(feature = "gecko")]
|
||||
{
|
||||
match (_old_display, _new_display) {
|
||||
(T::_webkit_box, T::_moz_box) |
|
||||
(T::_webkit_inline_box, T::_moz_inline_box) => {
|
||||
return true;
|
||||
}
|
||||
_ => {},
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Returns whether this "display" value is one of the types for
|
||||
/// ruby.
|
||||
#[cfg(feature = "gecko")]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue