Title: [199874] trunk
Revision
199874
Author
r...@igalia.com
Date
2016-04-22 00:54:22 -0700 (Fri, 22 Apr 2016)

Log Message

[css-grid] Fix bug with positioned items in vertical writing mode
https://bugs.webkit.org/show_bug.cgi?id=156870

Reviewed by Darin Adler.

Source/WebCore:

In RenderGrid::offsetAndBreadthForPositionedChild() we were using
directly borderLeft(), which is wrong in vertical writing modes.

To fix it we just need to use borderLogicalLeft() which is aware of
the current writing mode.

Test: fast/css-grid-layout/grid-positioned-children-writing-modes.html

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

LayoutTests:

Add new test to check positioned items in different writing modes
and direction combinations.

* fast/css-grid-layout/grid-positioned-children-writing-modes-expected.html: Added.
* fast/css-grid-layout/grid-positioned-children-writing-modes.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (199873 => 199874)


--- trunk/LayoutTests/ChangeLog	2016-04-22 07:09:12 UTC (rev 199873)
+++ trunk/LayoutTests/ChangeLog	2016-04-22 07:54:22 UTC (rev 199874)
@@ -1,3 +1,16 @@
+2016-04-22  Manuel Rego Casasnovas  <r...@igalia.com>
+
+        [css-grid] Fix bug with positioned items in vertical writing mode
+        https://bugs.webkit.org/show_bug.cgi?id=156870
+
+        Reviewed by Darin Adler.
+
+        Add new test to check positioned items in different writing modes
+        and direction combinations.
+
+        * fast/css-grid-layout/grid-positioned-children-writing-modes-expected.html: Added.
+        * fast/css-grid-layout/grid-positioned-children-writing-modes.html: Added.
+
 2016-04-21  Chris Dumez  <cdu...@apple.com>
 
         Drop [UsePointersEvenForNonNullableObjectArguments] from Document

Added: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-children-writing-modes-expected.html (0 => 199874)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-children-writing-modes-expected.html	                        (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-children-writing-modes-expected.html	2016-04-22 07:54:22 UTC (rev 199874)
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<link href="" rel="stylesheet">
+<style>
+
+.grid {
+    display: block;
+    margin: 5px;
+    width: 50px;
+    height: 25px;
+    padding: 5px 10px 15px 20px;
+    border-style: solid;
+    border-width: 5px 10px 15px 20px;
+    float: left;
+}
+
+.green {
+    background-color: green;
+    width: 30px;
+    height: 20px;
+    font: 10px/1 Ahem;
+}
+
+.verticalSize {
+    width: 20px;
+    height: 30px;
+}
+
+</style>
+
+<p>This test checks the behavior of the positioned grid children in combination with the writing modes and text direction properties.</p>
+<p>For the test to pass you should see no red and only green boxes. The black box will be positioned depending on the writing mode and text direction values.</p>
+
+<div class="grid">
+    <div class="green">XX</div>
+</div>
+
+<div class="grid verticalRL">
+    <div class="green verticalSize">XX</div>
+</div>
+
+<div class="grid verticalLR">
+    <div class="green verticalSize">XX</div>
+</div>
+
+<div class="grid directionRTL">
+    <div class="green">XX</div>
+</div>
+
+<div class="grid verticalRL directionRTL">
+    <div class="green verticalSize">XX</div>
+</div>
+
+<div class="grid verticalLR directionRTL">
+    <div class="green verticalSize">XX</div>
+</div>
+
+<div class="grid">
+    <div class="green">XX</div>
+</div>
+
+<div class="grid verticalRL">
+    <div class="green verticalSize">XX</div>
+</div>
+
+<div class="grid verticalLR">
+    <div class="green verticalSize">XX</div>
+</div>
+
+<div class="grid directionRTL">
+    <div class="green">XX</div>
+</div>
+
+<div class="grid verticalRL directionRTL">
+    <div class="green verticalSize">XX</div>
+</div>
+
+<div class="grid verticalLR directionRTL">
+    <div class="green verticalSize">XX</div>
+</div>

Added: trunk/LayoutTests/fast/css-grid-layout/grid-positioned-children-writing-modes.html (0 => 199874)


--- trunk/LayoutTests/fast/css-grid-layout/grid-positioned-children-writing-modes.html	                        (rev 0)
+++ trunk/LayoutTests/fast/css-grid-layout/grid-positioned-children-writing-modes.html	2016-04-22 07:54:22 UTC (rev 199874)
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<link href="" rel="stylesheet">
+<style>
+
+.grid {
+    margin: 5px;
+    width: 50px;
+    height: 25px;
+    -webkit-grid: 20px / 30px;
+    padding: 5px 10px 15px 20px;
+    border-style: solid;
+    border-width: 5px 10px 15px 20px;
+    float: left;
+    /* Ensures that the grid container is the containing block of the grid children. */
+    position: relative;
+}
+
+.absolute {
+    position: absolute;
+}
+
+.onlyFirstRowOnlyFirstColumn {
+    background-color: green;
+    -webkit-grid-column: 1 / 2;
+    -webkit-grid-row: 1 / 2;
+}
+
+.offsets {
+    left: 0;
+    top: 0;
+}
+
+.red {
+    background-color: red;
+}
+
+</style>
+
+<p>This test checks the behavior of the positioned grid children in combination with the writing modes and text direction properties.</p>
+<p>For the test to pass you should see no red and only green boxes. The black box will be positioned depending on the writing mode and text direction values.</p>
+
+<div class="grid">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid verticalRL">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid verticalLR">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid directionRTL">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid verticalRL directionRTL">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid verticalLR directionRTL">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute offsets onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid verticalRL">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute offsets onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid verticalLR">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute offsets onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid directionRTL">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute offsets onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid verticalRL directionRTL">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute offsets onlyFirstRowOnlyFirstColumn">XX</div>
+</div>
+
+<div class="grid verticalLR directionRTL">
+    <div class="sizedToGridArea red"></div>
+    <div class="sizedToGridArea absolute offsets onlyFirstRowOnlyFirstColumn">XX</div>
+</div>

Modified: trunk/Source/WebCore/ChangeLog (199873 => 199874)


--- trunk/Source/WebCore/ChangeLog	2016-04-22 07:09:12 UTC (rev 199873)
+++ trunk/Source/WebCore/ChangeLog	2016-04-22 07:54:22 UTC (rev 199874)
@@ -1,3 +1,21 @@
+2016-04-22  Manuel Rego Casasnovas  <r...@igalia.com>
+
+        [css-grid] Fix bug with positioned items in vertical writing mode
+        https://bugs.webkit.org/show_bug.cgi?id=156870
+
+        Reviewed by Darin Adler.
+
+        In RenderGrid::offsetAndBreadthForPositionedChild() we were using
+        directly borderLeft(), which is wrong in vertical writing modes.
+
+        To fix it we just need to use borderLogicalLeft() which is aware of
+        the current writing mode.
+
+        Test: fast/css-grid-layout/grid-positioned-children-writing-modes.html
+
+        * rendering/RenderGrid.cpp:
+        (WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
+
 2016-04-21  Zan Dobersek  <zdober...@igalia.com>
 
         REGRESSION(r199738): The ANGLE update broke accelerated compositing in GTK+ port

Modified: trunk/Source/WebCore/rendering/RenderGrid.cpp (199873 => 199874)


--- trunk/Source/WebCore/rendering/RenderGrid.cpp	2016-04-22 07:09:12 UTC (rev 199873)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp	2016-04-22 07:54:22 UTC (rev 199874)
@@ -1583,7 +1583,7 @@
         if (endIsAuto)
             offset = LayoutUnit();
         else {
-            offset = translateRTLCoordinate(m_columnPositions[endLine]) - borderLeft();
+            offset = translateRTLCoordinate(m_columnPositions[endLine]) - borderLogicalLeft();
 
             if (endLine > firstExplicitLine && endLine < lastExplicitLine) {
                 offset += guttersSize(direction, 2);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to