Always set mBgPos for LineDirection::Vertical. r?canaltinova
draft
Always set mBgPos for LineDirection::Vertical. r?canaltinova
MozReview-Commit-ID: 2FyErvUY8YL
--- a/servo/components/style/gecko/conversions.rs
+++ b/servo/components/style/gecko/conversions.rs
@@ -224,24 +224,28 @@ impl nsStyleImage {
unsafe {
(*gecko_gradient).mBgPosX
.set_value(CoordDataValue::Percent(x));
(*gecko_gradient).mBgPosY
.set_value(CoordDataValue::Percent(0.5));
}
},
LineDirection::Vertical(y) => {
- // Y::Bottom (to bottom) is ignored because it is the default value.
- if y == Y::Top {
- unsafe {
- (*gecko_gradient).mBgPosX
- .set_value(CoordDataValue::Percent(0.5));
- (*gecko_gradient).mBgPosY
- .set_value(CoordDataValue::Percent(0.0));
- }
+ // Although bottom is the default value, we can not ignore
+ // it here, because the rendering code of Gecko relies on
+ // this to behave correctly for legacy mode.
+ let y = match y {
+ Y::Top => 0.0,
+ Y::Bottom => 1.0,
+ };
+ unsafe {
+ (*gecko_gradient).mBgPosX
+ .set_value(CoordDataValue::Percent(0.5));
+ (*gecko_gradient).mBgPosY
+ .set_value(CoordDataValue::Percent(y));
}
},
LineDirection::Corner(horiz, vert) => {
let percent_x = match horiz {
X::Left => 0.0,
X::Right => 1.0,
};
let percent_y = match vert {