Title: [170304] trunk
Revision
170304
Author
[email protected]
Date
2014-06-23 11:56:52 -0700 (Mon, 23 Jun 2014)

Log Message

[New Multicolumn] Writing mode changes on the <html> and RenderView need to
be propagated to column sets and flow thread children of those renderers.
https://bugs.webkit.org/show_bug.cgi?id=134121
<rdar://problem/16884527>

Reviewed by Dean Jackson.


Source/WebCore: 
Added fast/multicol/pagination/RightToLeft-rl-dynamic.html

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::styleDidChange):
Refactor the propagation code for column sets and flow thread styles into a helper
function that is called here.

(WebCore::RenderBlockFlow::updateStylesForColumnChildren):
* rendering/RenderBlockFlow.h:
Add a new helper function for recalculating the styles of the column sets and
flow thread in response to changes.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::styleDidChange):
When the style is changed for a root element or the RenderView in response to
writing mode and direction changes, make sure that style gets propagated to
the column children by calling the new helper function.

LayoutTests: 
* fast/multicol/pagination/RightToLeft-rl-dynamic.html: Added.
* platform/mac/fast/multicol/pagination/BottomToTop-bt-expected.png:
* platform/mac/fast/multicol/pagination/BottomToTop-lr-expected.png:
* platform/mac/fast/multicol/pagination/BottomToTop-rl-expected.png:
* platform/mac/fast/multicol/pagination/BottomToTop-tb-expected.png:
* platform/mac/fast/multicol/pagination/LeftToRight-bt-expected.png:
* platform/mac/fast/multicol/pagination/LeftToRight-lr-expected.png:
* platform/mac/fast/multicol/pagination/LeftToRight-rl-expected.png:
* platform/mac/fast/multicol/pagination/LeftToRight-tb-expected.png:
* platform/mac/fast/multicol/pagination/RightToLeft-bt-expected.png:
* platform/mac/fast/multicol/pagination/RightToLeft-lr-expected.png:
* platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.png: Added.
* platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt: Added.
* platform/mac/fast/multicol/pagination/RightToLeft-rl-expected.png:
* platform/mac/fast/multicol/pagination/RightToLeft-tb-expected.png:
* platform/mac/fast/multicol/pagination/TopToBottom-bt-expected.png:
* platform/mac/fast/multicol/pagination/TopToBottom-lr-expected.png:
* platform/mac/fast/multicol/pagination/TopToBottom-rl-expected.png:
* platform/mac/fast/multicol/pagination/TopToBottom-tb-expected.png:
* platform/mac/fast/multicol/pagination/nested-transforms-expected.png:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (170303 => 170304)


--- trunk/LayoutTests/ChangeLog	2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/LayoutTests/ChangeLog	2014-06-23 18:56:52 UTC (rev 170304)
@@ -1,3 +1,33 @@
+2014-06-23  David Hyatt  <[email protected]>
+
+        [New Multicolumn] Writing mode changes on the <html> and RenderView need to
+        be propagated to column sets and flow thread children of those renderers.
+        https://bugs.webkit.org/show_bug.cgi?id=134121
+        <rdar://problem/16884527>
+
+        Reviewed by Dean Jackson.
+
+        * fast/multicol/pagination/RightToLeft-rl-dynamic.html: Added.
+        * platform/mac/fast/multicol/pagination/BottomToTop-bt-expected.png:
+        * platform/mac/fast/multicol/pagination/BottomToTop-lr-expected.png:
+        * platform/mac/fast/multicol/pagination/BottomToTop-rl-expected.png:
+        * platform/mac/fast/multicol/pagination/BottomToTop-tb-expected.png:
+        * platform/mac/fast/multicol/pagination/LeftToRight-bt-expected.png:
+        * platform/mac/fast/multicol/pagination/LeftToRight-lr-expected.png:
+        * platform/mac/fast/multicol/pagination/LeftToRight-rl-expected.png:
+        * platform/mac/fast/multicol/pagination/LeftToRight-tb-expected.png:
+        * platform/mac/fast/multicol/pagination/RightToLeft-bt-expected.png:
+        * platform/mac/fast/multicol/pagination/RightToLeft-lr-expected.png:
+        * platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.png: Added.
+        * platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt: Added.
+        * platform/mac/fast/multicol/pagination/RightToLeft-rl-expected.png:
+        * platform/mac/fast/multicol/pagination/RightToLeft-tb-expected.png:
+        * platform/mac/fast/multicol/pagination/TopToBottom-bt-expected.png:
+        * platform/mac/fast/multicol/pagination/TopToBottom-lr-expected.png:
+        * platform/mac/fast/multicol/pagination/TopToBottom-rl-expected.png:
+        * platform/mac/fast/multicol/pagination/TopToBottom-tb-expected.png:
+        * platform/mac/fast/multicol/pagination/nested-transforms-expected.png:
+
 2014-06-23  Michał Pakuła vel Rutka  <[email protected]>
 
         [EFL] Move WebKit2 test results into LayoutTests/platform/efl

Added: trunk/LayoutTests/fast/multicol/pagination/RightToLeft-rl-dynamic.html (0 => 170304)


--- trunk/LayoutTests/fast/multicol/pagination/RightToLeft-rl-dynamic.html	                        (rev 0)
+++ trunk/LayoutTests/fast/multicol/pagination/RightToLeft-rl-dynamic.html	2014-06-23 18:56:52 UTC (rev 170304)
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+    <style>
+        .box {
+            height: 50px;
+            width: 50px;
+            background-color: blue;
+        }
+        .box.changed {
+            background-color: green;
+        }
+    </style>
+    <script>
+        if (window.internals)
+            internals.setPagination("RightToLeftPaginated", 20, 180);
+    </script>
+</head>
+<body _onload_="document.body.offsetLeft; document.body.style.webkitWritingMode = 'vertical-rl'">
+
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>7 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+<div class="box" _onclick_="this.classList.toggle('changed')"></div>
+<p>8 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
+
+
+</body>
+</html>

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-bt-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-lr-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-rl-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/BottomToTop-tb-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-bt-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-lr-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-rl-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/LeftToRight-tb-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-bt-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-lr-expected.png


(Binary files differ)

Added: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.png


(Binary files differ)
Property changes on: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.png ___________________________________________________________________

Added: svn:mime-type

Added: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt (0 => 170304)


--- trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt	2014-06-23 18:56:52 UTC (rev 170304)
@@ -0,0 +1,80 @@
+layer at (0,0) size 1780x585
+  RenderView at (0,0) size 800x585
+    RenderMultiColumnSet at (0,0) size 800x585
+layer at (-764,0) size 1564x585 backgroundClip at (0,0) size 1780x585 clip at (0,0) size 1780x585 outlineClip at (0,0) size 1780x585
+  RenderMultiColumnFlowThread at (0,0) size 1564x585
+layer at (-764,0) size 1564x585 backgroundClip at (0,0) size 1780x585 clip at (0,0) size 1780x585 outlineClip at (0,0) size 1780x585
+  RenderBlock {HTML} at (0,0) size 1564x585
+    RenderBody {BODY} at (8,8) size 1540x569
+      RenderBlock {DIV} at (0,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (66,0) size 124x569
+        RenderText {#text} at (0,0) size 124x546
+          text run at (0,0) width 513: "1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
+          text run at (18,0) width 526: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
+          text run at (36,0) width 534: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
+          text run at (54,0) width 512: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
+          text run at (72,0) width 546: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
+          text run at (106,0) width 128: "anim id est laborum."
+      RenderBlock {DIV} at (206,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (272,0) size 116x569
+        RenderText {#text} at (0,0) size 116x546
+          text run at (0,0) width 513: "2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
+          text run at (18,0) width 526: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
+          text run at (36,0) width 534: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
+          text run at (54,0) width 512: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
+          text run at (80,0) width 546: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
+          text run at (98,0) width 128: "anim id est laborum."
+      RenderBlock {DIV} at (404,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (470,0) size 116x569
+        RenderText {#text} at (0,0) size 116x546
+          text run at (0,0) width 513: "3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
+          text run at (18,0) width 526: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
+          text run at (36,0) width 534: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
+          text run at (62,0) width 512: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
+          text run at (80,0) width 546: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
+          text run at (98,0) width 128: "anim id est laborum."
+      RenderBlock {DIV} at (602,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (668,0) size 116x569
+        RenderText {#text} at (0,0) size 116x546
+          text run at (0,0) width 513: "4 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
+          text run at (18,0) width 526: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
+          text run at (44,0) width 534: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
+          text run at (62,0) width 512: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
+          text run at (80,0) width 546: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
+          text run at (98,0) width 128: "anim id est laborum."
+      RenderBlock {DIV} at (800,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (866,0) size 116x569
+        RenderText {#text} at (0,0) size 116x546
+          text run at (0,0) width 513: "5 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
+          text run at (26,0) width 526: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
+          text run at (44,0) width 534: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
+          text run at (62,0) width 512: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
+          text run at (80,0) width 546: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
+          text run at (98,0) width 128: "anim id est laborum."
+      RenderBlock {DIV} at (998,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (1072,0) size 108x569
+        RenderText {#text} at (0,0) size 108x546
+          text run at (0,0) width 513: "6 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
+          text run at (18,0) width 526: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
+          text run at (36,0) width 534: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
+          text run at (54,0) width 512: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
+          text run at (72,0) width 546: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
+          text run at (90,0) width 128: "anim id est laborum."
+      RenderBlock {DIV} at (1196,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (1252,0) size 108x569
+        RenderText {#text} at (0,0) size 108x546
+          text run at (0,0) width 513: "7 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
+          text run at (18,0) width 526: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
+          text run at (36,0) width 534: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
+          text run at (54,0) width 512: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
+          text run at (72,0) width 546: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
+          text run at (90,0) width 128: "anim id est laborum."
+      RenderBlock {DIV} at (1376,0) size 50x50 [bgcolor=#0000FF]
+      RenderBlock {P} at (1432,0) size 108x569
+        RenderText {#text} at (0,0) size 108x546
+          text run at (0,0) width 513: "8 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor"
+          text run at (18,0) width 526: "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud"
+          text run at (36,0) width 534: "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure"
+          text run at (54,0) width 512: "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
+          text run at (72,0) width 546: "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit"
+          text run at (90,0) width 128: "anim id est laborum."

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-rl-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/RightToLeft-tb-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-bt-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-lr-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-rl-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/TopToBottom-tb-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/mac/fast/multicol/pagination/nested-transforms-expected.png


(Binary files differ)

Modified: trunk/Source/WebCore/ChangeLog (170303 => 170304)


--- trunk/Source/WebCore/ChangeLog	2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/ChangeLog	2014-06-23 18:56:52 UTC (rev 170304)
@@ -1,3 +1,30 @@
+2014-06-23  David Hyatt  <[email protected]>
+
+        [New Multicolumn] Writing mode changes on the <html> and RenderView need to
+        be propagated to column sets and flow thread children of those renderers.
+        https://bugs.webkit.org/show_bug.cgi?id=134121
+        <rdar://problem/16884527>
+
+        Reviewed by Dean Jackson.
+
+        Added fast/multicol/pagination/RightToLeft-rl-dynamic.html
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::styleDidChange):
+        Refactor the propagation code for column sets and flow thread styles into a helper
+        function that is called here.
+
+        (WebCore::RenderBlockFlow::updateStylesForColumnChildren):
+        * rendering/RenderBlockFlow.h:
+        Add a new helper function for recalculating the styles of the column sets and
+        flow thread in response to changes.
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::styleDidChange):
+        When the style is changed for a root element or the RenderView in response to
+        writing mode and direction changes, make sure that style gets propagated to
+        the column children by calling the new helper function.
+
 2014-06-23  Jer Noble  <[email protected]>
 
         [Mac] Uncaught exception crash when destroying MediaPlayerPrivateAVFoundationObjC

Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (170303 => 170304)


--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp	2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp	2014-06-23 18:56:52 UTC (rev 170304)
@@ -1968,14 +1968,16 @@
             invalidateLineLayoutPath();
     }
 
-    if (multiColumnFlowThread()) {
-        for (auto child = firstChildBox();
-             child && (child->isInFlowRenderFlowThread() || child->isRenderMultiColumnSet());
-             child = child->nextSiblingBox())
-            child->setStyle(RenderStyle::createAnonymousStyleWithDisplay(&style(), BLOCK));
-    }
+    if (multiColumnFlowThread())
+        updateStylesForColumnChildren();
 }
 
+void RenderBlockFlow::updateStylesForColumnChildren()
+{
+    for (auto child = firstChildBox(); child && (child->isInFlowRenderFlowThread() || child->isRenderMultiColumnSet()); child = child->nextSiblingBox())
+        child->setStyle(RenderStyle::createAnonymousStyleWithDisplay(&style(), BLOCK));
+}
+
 void RenderBlockFlow::styleWillChange(StyleDifference diff, const RenderStyle& newStyle)
 {
     const RenderStyle* oldStyle = hasInitializedStyle() ? &style() : nullptr;

Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.h (170303 => 170304)


--- trunk/Source/WebCore/rendering/RenderBlockFlow.h	2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.h	2014-06-23 18:56:52 UTC (rev 170304)
@@ -386,8 +386,9 @@
 
     void createMultiColumnFlowThread();
     void destroyMultiColumnFlowThread();
-    
+
     void updateColumnProgressionFromStyle(RenderStyle*);
+    void updateStylesForColumnChildren();
 
     virtual bool needsLayoutAfterRegionRangeChange() const override;
 

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (170303 => 170304)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2014-06-23 18:56:52 UTC (rev 170304)
@@ -367,21 +367,29 @@
         // Propagate the new writing mode and direction up to the RenderView.
         RenderStyle& viewStyle = view().style();
         bool viewChangedWritingMode = false;
+        bool rootStyleChanged = false;
+        bool viewStyleChanged = false;
+        RenderObject* rootRenderer = isBodyRenderer ? document().documentElement()->renderer() : nullptr;
         if (viewStyle.direction() != newStyle.direction() && (isRootRenderer || !document().directionSetOnDocumentElement())) {
             viewStyle.setDirection(newStyle.direction());
-            if (isBodyRenderer)
-                document().documentElement()->renderer()->style().setDirection(newStyle.direction());
+            viewStyleChanged = true;
+            if (isBodyRenderer) {
+                rootRenderer->style().setDirection(newStyle.direction());
+                rootStyleChanged = true;
+            }
             setNeedsLayoutAndPrefWidthsRecalc();
         }
 
         if (viewStyle.writingMode() != newStyle.writingMode() && (isRootRenderer || !document().writingModeSetOnDocumentElement())) {
             viewStyle.setWritingMode(newStyle.writingMode());
             viewChangedWritingMode = true;
+            viewStyleChanged = true;
             view().setHorizontalWritingMode(newStyle.isHorizontalWritingMode());
             view().markAllDescendantsWithFloatsForLayout();
             if (isBodyRenderer) {
-                document().documentElement()->renderer()->style().setWritingMode(newStyle.writingMode());
-                document().documentElement()->renderer()->setHorizontalWritingMode(newStyle.isHorizontalWritingMode());
+                rootStyleChanged = true;
+                rootRenderer->style().setWritingMode(newStyle.writingMode());
+                rootRenderer->setHorizontalWritingMode(newStyle.isHorizontalWritingMode());
             }
             setNeedsLayoutAndPrefWidthsRecalc();
         }
@@ -394,6 +402,12 @@
             if (view().multiColumnFlowThread())
                 view().updateColumnProgressionFromStyle(&viewStyle);
         }
+        
+        if (viewStyleChanged && view().multiColumnFlowThread())
+            view().updateStylesForColumnChildren();
+        
+        if (rootStyleChanged && rootRenderer && rootRenderer->isRenderBlockFlow() && toRenderBlockFlow(rootRenderer)->multiColumnFlowThread())
+            toRenderBlockFlow(rootRenderer)->updateStylesForColumnChildren();
     }
 
 #if ENABLE(CSS_SHAPES)

Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp (170303 => 170304)


--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp	2014-06-23 18:25:12 UTC (rev 170303)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp	2014-06-23 18:56:52 UTC (rev 170304)
@@ -665,6 +665,7 @@
         LayoutRect flowThreadOverflowPortion = flowThreadPortionOverflowRect(flowThreadPortion, i, colCount, colGap);
 
         // Do a repaint for this specific column.
+        flipForWritingMode(colRect);
         repaintFlowThreadContentRectangle(repaintRect, flowThreadPortion, colRect.location(), &flowThreadOverflowPortion);
     }
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to