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;
}