Title: [198834] trunk
Revision
198834
Author
r...@igalia.com
Date
2016-03-30 04:45:38 -0700 (Wed, 30 Mar 2016)

Log Message

[css-grid] Refactor positioned children code
https://bugs.webkit.org/show_bug.cgi?id=155972

Reviewed by Sergio Villar Senin.

Source/WebCore:

This is a refactoring of RenderGrid::offsetAndBreadthForPositionedChild()
in order to calculate offset and breadth in a more clean way.
Hopefully making the code easier to follow.

Thanks to the refactoring, now positioned children in RTL
are working fine if they use the static inline position
(when "left" and "right" properties are both "auto").

The other case (not having a static inline position)
will be fixed in a separated patch.

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):

LayoutTests:

Added RTL cases for most of the positioned tests,
which are now passing with this patch.

Pending to add RTL tests when "left" and "right" are not "auto"
(the item doesn't use the static inline position),
but that will be done in the other patch.

* fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt:
* fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html:
* fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt:
* fast/css-grid-layout/absolute-positioning-grid-container-parent.html:
* fast/css-grid-layout/grid-positioned-items-background-expected.html:
* fast/css-grid-layout/grid-positioned-items-background.html:
Fix test setting transparent background as it couldn't fail before.
Also using a different width, to have different values when we create the RTL version.
* fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt:
* fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt:
* fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html:
* fast/css-grid-layout/grid-positioned-items-implicit-grid.html:
* fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt:
* fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html:
* fast/css-grid-layout/grid-sizing-positioned-items-expected.txt:
* fast/css-grid-layout/grid-sizing-positioned-items.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (198833 => 198834)


--- trunk/LayoutTests/ChangeLog	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/ChangeLog	2016-03-30 11:45:38 UTC (rev 198834)
@@ -1,3 +1,34 @@
+2016-03-30  Manuel Rego Casasnovas  <r...@igalia.com>
+
+        [css-grid] Refactor positioned children code
+        https://bugs.webkit.org/show_bug.cgi?id=155972
+
+        Reviewed by Sergio Villar Senin.
+
+        Added RTL cases for most of the positioned tests,
+        which are now passing with this patch.
+
+        Pending to add RTL tests when "left" and "right" are not "auto"
+        (the item doesn't use the static inline position),
+        but that will be done in the other patch.
+
+        * fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt:
+        * fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html:
+        * fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt:
+        * fast/css-grid-layout/absolute-positioning-grid-container-parent.html:
+        * fast/css-grid-layout/grid-positioned-items-background-expected.html:
+        * fast/css-grid-layout/grid-positioned-items-background.html:
+        Fix test setting transparent background as it couldn't fail before.
+        Also using a different width, to have different values when we create the RTL version.
+        * fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt:
+        * fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt:
+        * fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html:
+        * fast/css-grid-layout/grid-positioned-items-implicit-grid.html:
+        * fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt:
+        * fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html:
+        * fast/css-grid-layout/grid-sizing-positioned-items-expected.txt:
+        * fast/css-grid-layout/grid-sizing-positioned-items.html:
+
 2016-03-26  Antti Koivisto  <an...@apple.com>
 
         Separate render tree updating from style resolve

Modified: trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt	2016-03-30 11:45:38 UTC (rev 198834)
@@ -5,3 +5,6 @@
 PASS
 PASS
 PASS
+PASS
+PASS
+PASS

Modified: trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html	2016-03-30 11:45:38 UTC (rev 198834)
@@ -227,5 +227,71 @@
     </div>
 </div>
 
+<div class="grid directionRTL">
+    <div class="sizedToGridArea absolute autoRowAutoColumn"
+        data-offset-x="-15" data-offset-y="15" data-expected-width="530" data-expected-height="530">
+    </div>
+    <div class="sizedToGridArea absolute firstRowFirstColumn"
+        data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="515">
+    </div>
+    <div class="sizedToGridArea absolute secondRowFirstColumn"
+        data-offset-x="0" data-offset-y="65" data-expected-width="515" data-expected-height="465">
+    </div>
+    <div class="sizedToGridArea absolute firstRowSecondColumn"
+        data-offset-x="0" data-offset-y="15" data-expected-width="465" data-expected-height="515">
+    </div>
+    <div class="sizedToGridArea absolute secondRowSecondColumn"
+        data-offset-x="0" data-offset-y="65" data-expected-width="465" data-expected-height="465">
+    </div>
+    <div class="sizedToGridArea absolute thirdRowThirdColumnSpanning2Rows"
+        data-offset-x="0" data-offset-y="165" data-expected-width="365" data-expected-height="350">
+    </div>
+    <div class="sizedToGridArea absolute thirdRowThirdColumnSpanning2Rows2Columns"
+        data-offset-x="15" data-offset-y="165" data-expected-width="350" data-expected-height="350">
+    </div>
+</div>
+
+<div class="grid directionRTL">
+    <div class="sizedToGridArea absolute endThirdRowEndThirdColumnSpanning2Rows"
+        data-offset-x="200" data-offset-y="65" data-expected-width="315" data-expected-height="250">
+    </div>
+    <div class="sizedToGridArea absolute endThirdRowEndThirdColumnSpanning2Rows2Columns"
+        data-offset-x="215" data-offset-y="65" data-expected-width="250" data-expected-height="250">
+    </div>
+    <div class="sizedToGridArea absolute endSecondRowEndSecondColumn"
+        data-offset-x="350" data-offset-y="15" data-expected-width="165" data-expected-height="165">
+    </div>
+    <div class="sizedToGridArea absolute endSecondRowEndFirstColumn"
+        data-offset-x="450" data-offset-y="15" data-expected-width="65" data-expected-height="165">
+    </div>
+    <div class="sizedToGridArea absolute endFirstRowEndSecondColumn"
+        data-offset-x="350" data-offset-y="15" data-expected-width="165" data-expected-height="65">
+    </div>
+    <div class="sizedToGridArea absolute endFirstRowEndFirstColumn"
+        data-offset-x="450" data-offset-y="15" data-expected-width="65" data-expected-height="65">
+    </div>
+</div>
+
+<div class="grid directionRTL">
+    <div class="sizedToGridArea absolute onlyFirstRowOnlyFirstColumn"
+        data-offset-x="465" data-offset-y="15" data-expected-width="50" data-expected-height="50">
+    </div>
+    <div class="sizedToGridArea absolute onlySecondRowOnlyFirstColumn"
+        data-offset-x="465" data-offset-y="65" data-expected-width="50" data-expected-height="100">
+    </div>
+    <div class="sizedToGridArea absolute onlyFirstRowOnlySecondColumn"
+        data-offset-x="365" data-offset-y="15" data-expected-width="100" data-expected-height="50">
+    </div>
+    <div class="sizedToGridArea absolute onlySecondRowOnlySecondColumn"
+        data-offset-x="365" data-offset-y="65" data-expected-width="100" data-expected-height="100">
+    </div>
+    <div class="sizedToGridArea absolute onlyThirdRowOnlyThirdColumnSpanning2Rows2Columns"
+        data-offset-x="15" data-offset-y="165" data-expected-width="350" data-expected-height="350">
+    </div>
+    <div class="sizedToGridArea absolute onlyThirdRowOnlyThirdColumnSpanning2Rows"
+        data-offset-x="215" data-offset-y="165" data-expected-width="150" data-expected-height="350">
+    </div>
+</div>
+
 </body>
 </html>

Modified: trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt	2016-03-30 11:45:38 UTC (rev 198834)
@@ -6,3 +6,9 @@
 PASS
 PASS
 PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS

Modified: trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent.html (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent.html	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/absolute-positioning-grid-container-parent.html	2016-03-30 11:45:38 UTC (rev 198834)
@@ -69,5 +69,41 @@
     </div>
 </div>
 
+<div class="container relative">
+    <div class="grid directionRTL">
+        <div class="sizedToGridArea absolute autoRowAutoColumn" data-offset-x="-150" data-offset-y="10" data-expected-width="500" data-expected-height="400"></div>
+    </div>
+</div>
+
+<div class="container relative">
+    <div class="grid directionRTL">
+        <div class="sizedToGridArea absolute firstRowFirstColumn" data-offset-x="-150" data-offset-y="10" data-expected-width="500" data-expected-height="400"></div>
+    </div>
+</div>
+
+<div class="container relative">
+    <div class="grid directionRTL">
+        <div class="sizedToGridArea absolute secondRowSecondColumn" data-offset-x="-150" data-offset-y="10" data-expected-width="500" data-expected-height="400"></div>
+    </div>
+</div>
+
+<div class="container">
+    <div class="grid relative directionRTL">
+        <div class="sizedToGridArea absolute autoRowAutoColumn" data-offset-x="-15" data-offset-y="5" data-expected-width="330" data-expected-height="210"></div>
+    </div>
+</div>
+
+<div class="container">
+    <div class="grid relative directionRTL">
+        <div class="sizedToGridArea absolute firstRowFirstColumn" data-offset-x="0" data-offset-y="5" data-expected-width="315" data-expected-height="205"></div>
+    </div>
+</div>
+
+<div class="container">
+    <div class="grid relative directionRTL">
+        <div class="sizedToGridArea absolute secondRowSecondColumn" data-offset-x="0" data-offset-y="30" data-expected-width="265" data-expected-height="180"></div>
+    </div>
+</div>
+
 </body>
 </html>

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background-expected.html (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background-expected.html	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background-expected.html	2016-03-30 11:45:38 UTC (rev 198834)
@@ -2,12 +2,11 @@
 <html>
 <style>
 .grid {
-    width: 400px;
+    width: 500px;
     height: 300px;
     border: 5px solid black;
     margin: 30px;
     padding: 15px;
-    background-color: grey;
 }
 
 .container {

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background.html (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background.html	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-background.html	2016-03-30 11:45:38 UTC (rev 198834)
@@ -6,13 +6,14 @@
 .grid {
     -webkit-grid-template-columns: 100px 200px;
     -webkit-grid-template-rows: 50px 150px;
-    width: 400px;
+    width: 500px;
     height: 300px;
     border: 5px solid black;
     margin: 30px;
     padding: 15px;
     /* Ensures that the grid container is the containing block of the absolutely positioned grid children. */
     position: relative;
+    background-color: transparent;
 }
 
 .container {

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt	2016-03-30 11:45:38 UTC (rev 198834)
@@ -2,3 +2,5 @@
 
 PASS
 PASS
+PASS
+PASS

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt	2016-03-30 11:45:38 UTC (rev 198834)
@@ -2,3 +2,5 @@
 
 PASS
 PASS
+PASS
+PASS

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html	2016-03-30 11:45:38 UTC (rev 198834)
@@ -66,4 +66,22 @@
     </div>
 </div>
 
+<div class="grid directionRTL">
+    <div class="absolute sizedToGridArea startImplicitLine"
+        data-offset-x="-15" data-offset-y="15" data-expected-width="530" data-expected-height="330">
+    </div>
+    <div class="absolute sizedToGridArea endImplicitLine"
+        data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+    </div>
+</div>
+
+<div class="grid directionRTL">
+    <div class="absolute sizedToGridArea startImplicitLineSpan"
+        data-offset-x="-15" data-offset-y="15" data-expected-width="530" data-expected-height="330">
+    </div>
+    <div class="absolute sizedToGridArea endImplicitLineSpan"
+        data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+    </div>
+</div>
+
 </body>

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid.html (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid.html	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-implicit-grid.html	2016-03-30 11:45:38 UTC (rev 198834)
@@ -52,5 +52,29 @@
     </div>
 </div>
 
+<div class="grid directionRTL">
+    <div class="sizedToGridArea absolute secondRowSecondColumn"
+        data-offset-x="-15" data-offset-y="15" data-expected-width="230" data-expected-height="230">
+    </div>
+    <div class="sizedToGridArea absolute endSecondRowEndSecondColumn"
+        data-offset-x="-15" data-offset-y="15" data-expected-width="230" data-expected-height="230">
+    </div>
+    <div class="sizedToGridArea absolute onlySecondRowOnlySecondColumn"
+        data-offset-x="-15" data-offset-y="15" data-expected-width="230" data-expected-height="230">
+    </div>
+</div>
+
+<div class="grid grid-columns-rows directionRTL">
+    <div class="sizedToGridArea absolute secondRowSecondColumn"
+        data-offset-x="0" data-offset-y="65" data-expected-width="115" data-expected-height="165">
+    </div>
+    <div class="sizedToGridArea absolute endSecondRowEndSecondColumn"
+        data-offset-x="-15" data-offset-y="15" data-expected-width="230" data-expected-height="230">
+    </div>
+    <div class="sizedToGridArea absolute onlySecondRowOnlySecondColumn"
+        data-offset-x="0" data-offset-y="65" data-expected-width="115" data-expected-height="165">
+    </div>
+</div>
+
 </body>
 </html>

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt	2016-03-30 11:45:38 UTC (rev 198834)
@@ -1,3 +1,4 @@
 This test checks that grid placement properties of absolutely positioned items using unknown named grid lines are treated as "auto".
 
 PASS
+PASS

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html	2016-03-30 11:45:38 UTC (rev 198834)
@@ -54,4 +54,16 @@
     </div>
 </div>
 
+<div class="grid directionRTL">
+    <div class="absolute sizedToGridArea startAndEndUnknownLines"
+        data-offset-x="-15" data-offset-y="15" data-expected-width="530" data-expected-height="330">
+    </div>
+    <div class="absolute sizedToGridArea endUnknownLine"
+        data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+    </div>
+    <div class="absolute sizedToGridArea startUnknownLine"
+        data-offset-x="200" data-offset-y="15" data-expected-width="315" data-expected-height="215">
+    </div>
+</div>
+
 </body>

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items-expected.txt (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items-expected.txt	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items-expected.txt	2016-03-30 11:45:38 UTC (rev 198834)
@@ -4,3 +4,6 @@
 PASS
 PASS
 PASS
+PASS
+PASS
+PASS

Modified: trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items.html (198833 => 198834)


--- trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items.html	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-sizing-positioned-items.html	2016-03-30 11:45:38 UTC (rev 198834)
@@ -110,4 +110,55 @@
     </div>
 </div>
 
+<div class="unconstrainedContainer">
+    <div class="grid directionRTL">
+        <div class="absolute autoRowAutoColumn sizedToGridArea"
+            data-offset-x="-15" data-offset-y="15" data-expected-width="1030" data-expected-height="1030">
+        </div>
+        <div class="absolute secondRowSecondColumn sizedToGridArea"
+            data-offset-x="0" data-offset-y="65" data-expected-width="915" data-expected-height="965">
+        </div>
+        <div class="absolute onlyFirstRowOnlyFirstColumn sizedToGridArea"
+            data-offset-x="915" data-offset-y="15" data-expected-width="100" data-expected-height="50">
+        </div>
+        <div class="absolute endSecondRowEndSecondColumn sizedToGridArea"
+            data-offset-x="700" data-offset-y="15" data-expected-width="315" data-expected-height="215">
+        </div>
+    </div>
+</div>
+
+<div class="unconstrainedContainer">
+    <div class="grid directionRTL">
+        <div class="absolute autoRowAutoColumn lengthSize"
+            data-offset-x="965" data-offset-y="15" data-expected-width="50" data-expected-height="20">
+        </div>
+        <div class="absolute secondRowSecondColumn lengthSize"
+            data-offset-x="865" data-offset-y="65" data-expected-width="50" data-expected-height="20">
+        </div>
+        <div class="absolute onlyFirstRowOnlyFirstColumn lengthSize"
+            data-offset-x="965" data-offset-y="15" data-expected-width="50" data-expected-height="20">
+        </div>
+        <div class="absolute endSecondRowEndSecondColumn lengthSize"
+            data-offset-x="965" data-offset-y="15" data-expected-width="50" data-expected-height="20">
+        </div>
+    </div>
+</div>
+
+<div class="unconstrainedContainer">
+    <div class="grid directionRTL">
+        <div class="absolute autoRowAutoColumn percentageSize"
+            data-offset-x="603" data-offset-y="15" data-expected-width="412" data-expected-height="206">
+        </div>
+        <div class="absolute secondRowSecondColumn percentageSize"
+            data-offset-x="549" data-offset-y="65" data-expected-width="366" data-expected-height="193">
+        </div>
+        <div class="absolute onlyFirstRowOnlyFirstColumn percentageSize"
+            data-offset-x="975" data-offset-y="15" data-expected-width="40" data-expected-height="10">
+        </div>
+        <div class="absolute endSecondRowEndSecondColumn percentageSize"
+            data-offset-x="889" data-offset-y="15" data-expected-width="126" data-expected-height="43">
+        </div>
+    </div>
+</div>
+
 </body>

Modified: trunk/Source/WebCore/ChangeLog (198833 => 198834)


--- trunk/Source/WebCore/ChangeLog	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/Source/WebCore/ChangeLog	2016-03-30 11:45:38 UTC (rev 198834)
@@ -1,3 +1,24 @@
+2016-03-30  Manuel Rego Casasnovas  <r...@igalia.com>
+
+        [css-grid] Refactor positioned children code
+        https://bugs.webkit.org/show_bug.cgi?id=155972
+
+        Reviewed by Sergio Villar Senin.
+
+        This is a refactoring of RenderGrid::offsetAndBreadthForPositionedChild()
+        in order to calculate offset and breadth in a more clean way.
+        Hopefully making the code easier to follow.
+
+        Thanks to the refactoring, now positioned children in RTL
+        are working fine if they use the static inline position
+        (when "left" and "right" properties are both "auto").
+
+        The other case (not having a static inline position)
+        will be fixed in a separated patch.
+
+        * rendering/RenderGrid.cpp:
+        (WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
+
 2016-03-30  Youenn Fablet  <youenn.fab...@crf.canon.fr>
 
         Binding generator should allow passing DOM objects parameters as references

Modified: trunk/Source/WebCore/rendering/RenderGrid.cpp (198833 => 198834)


--- trunk/Source/WebCore/rendering/RenderGrid.cpp	2016-03-30 08:18:19 UTC (rev 198833)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp	2016-03-30 11:45:38 UTC (rev 198834)
@@ -1517,21 +1517,24 @@
         || (endLine < firstExplicitLine)
         || (endLine > lastExplicitLine);
 
-    LayoutUnit start = startIsAuto ? LayoutUnit() : (isRowAxis ?  m_columnPositions[startLine] : m_rowPositions[startLine]);
-    LayoutUnit end = endIsAuto ? (isRowAxis ? logicalWidth() : logicalHeight()) : (isRowAxis ?  m_columnPositions[endLine] : m_rowPositions[endLine]);
+    // We're normalizing the positions to avoid issues with RTL (as they're stored in the same order than LTR but adding an offset).
+    LayoutUnit start;
+    if (!startIsAuto) {
+        if (isRowAxis)
+            start = m_columnPositions[startLine] - m_columnPositions[0] + paddingStart();
+        else
+            start = m_rowPositions[startLine] - m_rowPositions[0] + paddingBefore();
+    }
 
-    breadth = end - start;
-
-    if (startIsAuto)
-        breadth -= isRowAxis ? borderStart() : borderBefore();
-    else
-        start -= isRowAxis ? borderStart() : borderBefore();
-
-    if (endIsAuto) {
-        breadth -= isRowAxis ? borderEnd() : borderAfter();
-        breadth -= scrollbarLogicalWidth();
+    LayoutUnit end = isRowAxis ? clientLogicalWidth() : clientLogicalHeight();
+    if (!endIsAuto) {
+        if (isRowAxis)
+            end = m_columnPositions[endLine] - m_columnPositions[0] + paddingStart();
+        else
+            end = m_rowPositions[endLine] - m_rowPositions[0] + paddingBefore();
     }
 
+    breadth = end - start;
     offset = start;
 
     if (child.parent() == this && !startIsAuto) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to