2008-03-18  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler.

        - eliminate RenderFlow::m_clear

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::layoutBlock): Removed code to set m_clear.
        (WebCore::RenderBlock::newLine): Added a 'clear' parameter.
        * rendering/RenderBlock.h:
        * rendering/RenderFlow.h:
        (WebCore::RenderFlow::RenderFlow): Removed initialization of m_clear.
        * rendering/bidi.cpp:
        (WebCore::RenderBlock::layoutInlineChildren): Added a local 'clear'
        variable, passing a pointer to it to findNextLineBreak() and its value
        to newLine(). 
        (WebCore::RenderBlock::findNextLineBreak): Added a 'clear' parameter,
        which this method adjusts when it encounters a <br>.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@31127 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/rendering/bidi.cpp b/WebCore/rendering/bidi.cpp
index a62965e..d42b597 100644
--- a/WebCore/rendering/bidi.cpp
+++ b/WebCore/rendering/bidi.cpp
@@ -866,10 +866,8 @@
 
         BidiIterator end = start.position();
 
-        if (!fullLayout && end.atEnd() && lastRootBox() && lastRootBox()->firstChild()->object()->isBR() && lastRootBox()->object()->firstChild()->style()->clear() != CNONE) {
-            m_clearStatus = lastRootBox()->object()->firstChild()->style()->clear();
-            newLine();
-        }
+        if (!fullLayout && end.atEnd() && lastRootBox() && lastRootBox()->firstChild()->object()->isBR() && lastRootBox()->object()->firstChild()->style()->clear() != CNONE)
+            newLine(lastRootBox()->object()->firstChild()->style()->clear());
 
         bool endLineMatched = false;
 
@@ -884,7 +882,8 @@
                 buildCompactRuns(firstChild(), start);
                 start.setPosition(BidiIterator(this, firstChild()->nextSibling(), 0));
             }
-            end = findNextLineBreak(start);
+            EClear clear = CNONE;
+            end = findNextLineBreak(start, &clear);
             if (start.position().atEnd()) {
                 start.deleteRuns();
                 break;
@@ -934,7 +933,7 @@
                 }
 
                 m_firstLine = false;
-                newLine();
+                newLine(clear);
             }
 
             if (m_floatingObjects) {
@@ -1449,7 +1448,7 @@
     }
 }
 
-BidiIterator RenderBlock::findNextLineBreak(BidiState& start)
+BidiIterator RenderBlock::findNextLineBreak(BidiState& start, EClear* clear)
 {
     ASSERT(start.position().block == this);
 
@@ -1526,12 +1525,8 @@
                 trailingSpaceObject = 0;
                 previousLineBrokeCleanly = true;
 
-                if (!isLineEmpty) {
-                    // only check the clear status for non-empty lines.
-                    EClear clear = o->style()->clear();
-                    if (clear != CNONE)
-                        m_clearStatus = (EClear) (m_clearStatus | clear);
-                }
+                if (!isLineEmpty && clear)
+                    *clear = o->style()->clear();
             }
             goto end;
         }