Title: [144633] trunk
Revision
144633
Author
[email protected]
Date
2013-03-04 08:43:35 -0800 (Mon, 04 Mar 2013)

Log Message

[New Multicolumn] Make sure region styling works for columns inside regions.
https://bugs.webkit.org/show_bug.cgi?id=111276

Reviewed by Sam Weinig.

Source/WebCore: 

Test: fast/regions/region-styling-in-columns.html

* rendering/RenderFlowThread.cpp:
(WebCore::CurrentRenderFlowThreadMaintainer::CurrentRenderFlowThreadMaintainer):
(WebCore::CurrentRenderFlowThreadMaintainer::~CurrentRenderFlowThreadMaintainer):
* rendering/RenderFlowThread.h:
(CurrentRenderFlowThreadMaintainer):
Fix the CurrentRenderFlowThreadMaintainer so that it saves off the old render flow thread
and restores it when done. This effectively makes flow thread layout a push/pop stack,
since with in-flow threads, this is allowed. We assert that a nested flow thread is
in-flow to preserve the invariant that you can't nest CSS Regions flow thread.

* rendering/RenderRegion.cpp:
(WebCore::RenderRegion::computeChildrenStyleInRegion):
Add isInFlowRenderFlowThread() to the anonymous check to make sure a style gets made
for the nested flow thread.

LayoutTests: 

* fast/regions/region-style-in-columns-expected.html: Added.
* fast/regions/region-style-in-columns.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (144632 => 144633)


--- trunk/LayoutTests/ChangeLog	2013-03-04 16:36:58 UTC (rev 144632)
+++ trunk/LayoutTests/ChangeLog	2013-03-04 16:43:35 UTC (rev 144633)
@@ -1,3 +1,13 @@
+2013-03-03  David Hyatt  <[email protected]>
+
+        [New Multicolumn] Make sure region styling works for columns inside regions.
+        https://bugs.webkit.org/show_bug.cgi?id=111276
+
+        Reviewed by Sam Weinig.
+
+        * fast/regions/region-style-in-columns-expected.html: Added.
+        * fast/regions/region-style-in-columns.html: Added.
+
 2013-03-04  Ádám Kallai  <[email protected]>
 
         [Qt][WK2] Unreviewed gardening. Updated platform specific expected files and png results.

Added: trunk/LayoutTests/fast/regions/region-style-in-columns-expected.html (0 => 144633)


--- trunk/LayoutTests/fast/regions/region-style-in-columns-expected.html	                        (rev 0)
+++ trunk/LayoutTests/fast/regions/region-style-in-columns-expected.html	2013-03-04 16:43:35 UTC (rev 144633)
@@ -0,0 +1,11 @@
+<!doctype html>
+<html>
+    <head>
+        <style>
+            #p1 { color: #008000; position: absolute; top: 10px; }
+        </style>
+    </head>
+    <body>
+		<p id="p1">P color styled in region: #008000.</p>
+    </body>
+</html>

Added: trunk/LayoutTests/fast/regions/region-style-in-columns.html (0 => 144633)


--- trunk/LayoutTests/fast/regions/region-style-in-columns.html	                        (rev 0)
+++ trunk/LayoutTests/fast/regions/region-style-in-columns.html	2013-03-04 16:43:35 UTC (rev 144633)
@@ -0,0 +1,31 @@
+<!doctype html>
+<html>
+    <!--
+    Test for https://bugs.webkit.org/show_bug.cgi?id=85633 ([CSSRegions]Add region styling support for color property) combined with the fact that
+        the content is inside columns.
+    You should not see any red text below.
+    -->
+    <head>
+        <script>
+        internals.settings.setRegionBasedColumnsEnabled(true)
+        </script>
+
+        <style>
+            .regionBox { width: 350px; height: 25px; }
+            .regionBox2 { width: 350px; height: 50px; }
+
+            #article1 { -webkit-flow-into: flow1; width:600px;}
+            #region1 { -webkit-flow-from: flow1; position: absolute; top: 10px; }
+            #p1 {  color: #ff0000; -webkit-column-count:2;column-count:2; height:30px}
+            @-webkit-region #region1 {
+                #p1 { color: #008000; }
+            }
+        </style>
+    </head>
+    <body>
+        <div id="article1">
+            <p id="p1">P color styled in region: #008000.</p>
+        </div>
+        <div id="region1" class="regionBox"></div>
+    </body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (144632 => 144633)


--- trunk/Source/WebCore/ChangeLog	2013-03-04 16:36:58 UTC (rev 144632)
+++ trunk/Source/WebCore/ChangeLog	2013-03-04 16:43:35 UTC (rev 144633)
@@ -1,3 +1,27 @@
+2013-03-03  David Hyatt  <[email protected]>
+
+        [New Multicolumn] Make sure region styling works for columns inside regions.
+        https://bugs.webkit.org/show_bug.cgi?id=111276
+
+        Reviewed by Sam Weinig.
+
+        Test: fast/regions/region-styling-in-columns.html
+
+        * rendering/RenderFlowThread.cpp:
+        (WebCore::CurrentRenderFlowThreadMaintainer::CurrentRenderFlowThreadMaintainer):
+        (WebCore::CurrentRenderFlowThreadMaintainer::~CurrentRenderFlowThreadMaintainer):
+        * rendering/RenderFlowThread.h:
+        (CurrentRenderFlowThreadMaintainer):
+        Fix the CurrentRenderFlowThreadMaintainer so that it saves off the old render flow thread
+        and restores it when done. This effectively makes flow thread layout a push/pop stack,
+        since with in-flow threads, this is allowed. We assert that a nested flow thread is
+        in-flow to preserve the invariant that you can't nest CSS Regions flow thread.
+
+        * rendering/RenderRegion.cpp:
+        (WebCore::RenderRegion::computeChildrenStyleInRegion):
+        Add isInFlowRenderFlowThread() to the anonymous check to make sure a style gets made
+        for the nested flow thread.
+
 2013-03-04  Andrey Lushnikov  <[email protected]>
 
         Web Inspector: WebInspector.AceTextEditor throws a warning

Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (144632 => 144633)


--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp	2013-03-04 16:36:58 UTC (rev 144632)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp	2013-03-04 16:43:35 UTC (rev 144633)
@@ -991,11 +991,13 @@
 
 CurrentRenderFlowThreadMaintainer::CurrentRenderFlowThreadMaintainer(RenderFlowThread* renderFlowThread)
     : m_renderFlowThread(renderFlowThread)
+    , m_previousRenderFlowThread(0)
 {
     if (!m_renderFlowThread)
         return;
     RenderView* view = m_renderFlowThread->view();
-    ASSERT(!view->flowThreadController()->currentRenderFlowThread());
+    m_previousRenderFlowThread = view->flowThreadController()->currentRenderFlowThread();
+    ASSERT(!m_previousRenderFlowThread || !renderFlowThread->isRenderNamedFlowThread());
     view->flowThreadController()->setCurrentRenderFlowThread(m_renderFlowThread);
 }
 
@@ -1005,7 +1007,7 @@
         return;
     RenderView* view = m_renderFlowThread->view();
     ASSERT(view->flowThreadController()->currentRenderFlowThread() == m_renderFlowThread);
-    view->flowThreadController()->setCurrentRenderFlowThread(0);
+    view->flowThreadController()->setCurrentRenderFlowThread(m_previousRenderFlowThread);
 }
 
 

Modified: trunk/Source/WebCore/rendering/RenderFlowThread.h (144632 => 144633)


--- trunk/Source/WebCore/rendering/RenderFlowThread.h	2013-03-04 16:36:58 UTC (rev 144632)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.h	2013-03-04 16:43:35 UTC (rev 144633)
@@ -234,6 +234,7 @@
     ~CurrentRenderFlowThreadMaintainer();
 private:
     RenderFlowThread* m_renderFlowThread;
+    RenderFlowThread* m_previousRenderFlowThread;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/rendering/RenderRegion.cpp (144632 => 144633)


--- trunk/Source/WebCore/rendering/RenderRegion.cpp	2013-03-04 16:36:58 UTC (rev 144632)
+++ trunk/Source/WebCore/rendering/RenderRegion.cpp	2013-03-04 16:43:35 UTC (rev 144633)
@@ -541,7 +541,7 @@
             childStyleInRegion = it->value.style;
             objectRegionStyleCached = true;
         } else {
-            if (child->isAnonymous())
+            if (child->isAnonymous() || child->isInFlowRenderFlowThread())
                 childStyleInRegion = RenderStyle::createAnonymousStyleWithDisplay(object->style(), child->style()->display());
             else if (child->isText())
                 childStyleInRegion = RenderStyle::clone(object->style());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to