Title: [211564] trunk
Revision
211564
Author
an...@apple.com
Date
2017-02-02 09:06:25 -0800 (Thu, 02 Feb 2017)

Log Message

Column progression wrong after enabling pagination on RTL document
https://bugs.webkit.org/show_bug.cgi?id=167733
<rdar://problem/29012252>

Reviewed by Zalan Bujtas.

Source/WebCore:

Column progression depends on document direction but was not updated when direction changed.

Test: fast/multicol/pagination/pagination-dynamic-rtl.html

* rendering/RenderBox.cpp:
(WebCore::RenderBox::styleDidChange):

    Update column styles if document direction changes.

LayoutTests:

* fast/multicol/pagination/pagination-dynamic-rtl-expected.html: Added.
* fast/multicol/pagination/pagination-dynamic-rtl.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (211563 => 211564)


--- trunk/LayoutTests/ChangeLog	2017-02-02 17:04:42 UTC (rev 211563)
+++ trunk/LayoutTests/ChangeLog	2017-02-02 17:06:25 UTC (rev 211564)
@@ -1,3 +1,14 @@
+2017-02-02  Antti Koivisto  <an...@apple.com>
+
+        Column progression wrong after enabling pagination on RTL document
+        https://bugs.webkit.org/show_bug.cgi?id=167733
+        <rdar://problem/29012252>
+
+        Reviewed by Zalan Bujtas.
+
+        * fast/multicol/pagination/pagination-dynamic-rtl-expected.html: Added.
+        * fast/multicol/pagination/pagination-dynamic-rtl.html: Added.
+
 2017-02-02  Ryan Haddad  <ryanhad...@apple.com>
 
         Marking http/tests/contentextensions/block-everything-unless-domain.html as flaky on macOS.

Added: trunk/LayoutTests/fast/multicol/pagination/pagination-dynamic-rtl-expected.html (0 => 211564)


--- trunk/LayoutTests/fast/multicol/pagination/pagination-dynamic-rtl-expected.html	                        (rev 0)
+++ trunk/LayoutTests/fast/multicol/pagination/pagination-dynamic-rtl-expected.html	2017-02-02 17:06:25 UTC (rev 211564)
@@ -0,0 +1,15 @@
+<html>
+<head>
+<script>
+if (window.internals)
+    internals.setPagination("RightToLeftPaginated", 0);
+</script>
+</head>
+<body style="direction:rtl">
+<div style="border: solid; height: 900px; font: 50px ahem; -webkit-font-smoothing: none;">
+<br><br><br><br><br><br><br><br><br><br>
+Lorem<br>
+<span style="color: red;">ipsum</br>
+</div>
+</body>
+</html>

Added: trunk/LayoutTests/fast/multicol/pagination/pagination-dynamic-rtl.html (0 => 211564)


--- trunk/LayoutTests/fast/multicol/pagination/pagination-dynamic-rtl.html	                        (rev 0)
+++ trunk/LayoutTests/fast/multicol/pagination/pagination-dynamic-rtl.html	2017-02-02 17:06:25 UTC (rev 211564)
@@ -0,0 +1,17 @@
+<html>
+<head>
+<script>
+function test() {
+if (window.internals)
+    internals.setPagination("RightToLeftPaginated", 0);
+}
+</script>
+</head>
+<body style="direction:rtl" _onload_="test()">
+<div style="border: solid; height: 900px; font: 50px ahem; -webkit-font-smoothing: none;">
+<br><br><br><br><br><br><br><br><br><br>
+Lorem<br>
+<span style="color: red;">ipsum</br>
+</div>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (211563 => 211564)


--- trunk/Source/WebCore/ChangeLog	2017-02-02 17:04:42 UTC (rev 211563)
+++ trunk/Source/WebCore/ChangeLog	2017-02-02 17:06:25 UTC (rev 211564)
@@ -1,3 +1,20 @@
+2017-02-02  Antti Koivisto  <an...@apple.com>
+
+        Column progression wrong after enabling pagination on RTL document
+        https://bugs.webkit.org/show_bug.cgi?id=167733
+        <rdar://problem/29012252>
+
+        Reviewed by Zalan Bujtas.
+
+        Column progression depends on document direction but was not updated when direction changed.
+
+        Test: fast/multicol/pagination/pagination-dynamic-rtl.html
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::styleDidChange):
+
+            Update column styles if document direction changes.
+
 2017-02-02  Xabier Rodriguez Calvar  <calva...@igalia.com>
 
         [EME][GStreamer] Fixed decryptor selection

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (211563 => 211564)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2017-02-02 17:04:42 UTC (rev 211563)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2017-02-02 17:06:25 UTC (rev 211564)
@@ -392,13 +392,12 @@
         // Propagate the new writing mode and direction up to the RenderView.
         auto* documentElementRenderer = document().documentElement()->renderer();
         auto& viewStyle = view().mutableStyle();
-        bool viewChangedWritingMode = false;
         bool rootStyleChanged = false;
-        bool viewStyleChanged = false;
+        bool viewDirectionOrWritingModeChanged = false;
         auto* rootRenderer = isBodyRenderer ? documentElementRenderer : nullptr;
         if (viewStyle.direction() != newStyle.direction() && (isDocElementRenderer || !documentElementRenderer->style().hasExplicitlySetDirection())) {
             viewStyle.setDirection(newStyle.direction());
-            viewStyleChanged = true;
+            viewDirectionOrWritingModeChanged = true;
             if (isBodyRenderer) {
                 rootRenderer->mutableStyle().setDirection(newStyle.direction());
                 rootStyleChanged = true;
@@ -410,8 +409,7 @@
 
         if (viewStyle.writingMode() != newStyle.writingMode() && (isDocElementRenderer || !documentElementRenderer->style().hasExplicitlySetWritingMode())) {
             viewStyle.setWritingMode(newStyle.writingMode());
-            viewChangedWritingMode = true;
-            viewStyleChanged = true;
+            viewDirectionOrWritingModeChanged = true;
             view().setHorizontalWritingMode(newStyle.isHorizontalWritingMode());
             view().markAllDescendantsWithFloatsForLayout();
             if (isBodyRenderer) {
@@ -425,13 +423,13 @@
         view().frameView().recalculateScrollbarOverlayStyle();
         
         const Pagination& pagination = view().frameView().pagination();
-        if (viewChangedWritingMode && pagination.mode != Pagination::Unpaginated) {
+        if (viewDirectionOrWritingModeChanged && pagination.mode != Pagination::Unpaginated) {
             viewStyle.setColumnStylesFromPaginationMode(pagination.mode);
             if (view().multiColumnFlowThread())
                 view().updateColumnProgressionFromStyle(viewStyle);
         }
         
-        if (viewStyleChanged && view().multiColumnFlowThread())
+        if (viewDirectionOrWritingModeChanged && view().multiColumnFlowThread())
             view().updateStylesForColumnChildren();
         
         if (rootStyleChanged && is<RenderBlockFlow>(rootRenderer) && downcast<RenderBlockFlow>(*rootRenderer).multiColumnFlowThread())
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to