Always set mBgPos for LineDirection::Vertical. r?canaltinova draft
authorXidorn Quan <me@upsuper.org>
Fri, 04 Aug 2017 15:19:30 +1000
changeset 620980 61e80df06c51ca7b2b55d7a8911f3fddac4e2754
parent 620979 1849aeb2b127b300d5576257e227610cf9e0e8f9
child 620981 667325a42c4079ab170f6da74add7e83773f0e24
push id72207
push userxquan@mozilla.com
push dateFri, 04 Aug 2017 05:53:30 +0000
reviewerscanaltinova
milestone57.0a1
Always set mBgPos for LineDirection::Vertical. r?canaltinova MozReview-Commit-ID: 2FyErvUY8YL
servo/components/style/gecko/conversions.rs
--- 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 {