Commit 594bf833 authored by rniwa@webkit.org's avatar rniwa@webkit.org

2011-04-06 Ryosuke Niwa <rniwa@webkit.org>

        Reviewed by Eric Seidel.

        Move RenderBlock::positionNewFloatOnLine to RenderBlockLineLayout.cpp
        https://bugs.webkit.org/show_bug.cgi?id=57943

        * rendering/RenderBlock.cpp: Removed positionNewFloatOnLine.
        * rendering/RenderBlockLineLayout.cpp:
        (WebCore::RenderBlock::positionNewFloatOnLine): Moved from RenderBlock.cpp


git-svn-id: svn://svn.chromium.org/blink/trunk@83042 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 02519d78
2011-04-06 Ryosuke Niwa <rniwa@webkit.org>
Reviewed by Eric Seidel.
Move RenderBlock::positionNewFloatOnLine to RenderBlockLineLayout.cpp
https://bugs.webkit.org/show_bug.cgi?id=57943
* rendering/RenderBlock.cpp: Removed positionNewFloatOnLine.
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlock::positionNewFloatOnLine): Moved from RenderBlock.cpp
2011-04-05 Diego Gonzalez <diegohcg@webkit.org>
Buildfix after r82125.
......@@ -3320,59 +3320,6 @@ bool RenderBlock::positionNewFloats()
return true;
}
bool RenderBlock::positionNewFloatOnLine(FloatingObject* newFloat, FloatingObject* lastFloatFromPreviousLine, bool firstLine, int& lineLeftOffset, int& lineRightOffset)
{
bool didPosition = positionNewFloats();
if (!didPosition)
return didPosition;
int blockOffset = logicalHeight();
if (blockOffset >= logicalTopForFloat(newFloat) && blockOffset < logicalBottomForFloat(newFloat)) {
if (newFloat->type() == FloatingObject::FloatLeft)
lineLeftOffset = logicalRightForFloat(newFloat);
else
lineRightOffset = logicalLeftForFloat(newFloat);
}
if (!newFloat->m_paginationStrut)
return didPosition;
FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
ASSERT(floatingObjectSet.last() == newFloat);
int floatLogicalTop = logicalTopForFloat(newFloat);
int paginationStrut = newFloat->m_paginationStrut;
if (floatLogicalTop - paginationStrut != logicalHeight())
return didPosition;
FloatingObjectSetIterator it = floatingObjectSet.end();
--it; // Last float is newFloat, skip that one.
FloatingObjectSetIterator begin = floatingObjectSet.begin();
while (it != begin) {
--it;
FloatingObject* f = *it;
if (f == lastFloatFromPreviousLine)
break;
if (logicalTopForFloat(f) == logicalHeight()) {
ASSERT(!f->m_paginationStrut);
f->m_paginationStrut = paginationStrut;
RenderBox* o = f->m_renderer;
setLogicalTopForChild(o, logicalTopForChild(o) + marginBeforeForChild(o) + paginationStrut);
if (o->isRenderBlock())
toRenderBlock(o)->setChildNeedsLayout(true, false);
o->layoutIfNeeded();
setLogicalTopForFloat(f, logicalTopForFloat(f) + f->m_paginationStrut);
}
}
setLogicalHeight(blockOffset + paginationStrut);
lineLeftOffset = logicalLeftOffsetForLine(logicalHeight(), firstLine);
lineRightOffset = logicalRightOffsetForLine(logicalHeight(), firstLine);
return didPosition;
}
void RenderBlock::newLine(EClear clear)
{
positionNewFloats();
......
......@@ -2244,4 +2244,57 @@ void RenderBlock::checkLinesForTextOverflow()
}
}
bool RenderBlock::positionNewFloatOnLine(FloatingObject* newFloat, FloatingObject* lastFloatFromPreviousLine, bool firstLine, int& lineLeftOffset, int& lineRightOffset)
{
bool didPosition = positionNewFloats();
if (!didPosition)
return didPosition;
int blockOffset = logicalHeight();
if (blockOffset >= logicalTopForFloat(newFloat) && blockOffset < logicalBottomForFloat(newFloat)) {
if (newFloat->type() == FloatingObject::FloatLeft)
lineLeftOffset = logicalRightForFloat(newFloat);
else
lineRightOffset = logicalLeftForFloat(newFloat);
}
if (!newFloat->m_paginationStrut)
return didPosition;
FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
ASSERT(floatingObjectSet.last() == newFloat);
int floatLogicalTop = logicalTopForFloat(newFloat);
int paginationStrut = newFloat->m_paginationStrut;
if (floatLogicalTop - paginationStrut != logicalHeight())
return didPosition;
FloatingObjectSetIterator it = floatingObjectSet.end();
--it; // Last float is newFloat, skip that one.
FloatingObjectSetIterator begin = floatingObjectSet.begin();
while (it != begin) {
--it;
FloatingObject* f = *it;
if (f == lastFloatFromPreviousLine)
break;
if (logicalTopForFloat(f) == logicalHeight()) {
ASSERT(!f->m_paginationStrut);
f->m_paginationStrut = paginationStrut;
RenderBox* o = f->m_renderer;
setLogicalTopForChild(o, logicalTopForChild(o) + marginBeforeForChild(o) + paginationStrut);
if (o->isRenderBlock())
toRenderBlock(o)->setChildNeedsLayout(true, false);
o->layoutIfNeeded();
setLogicalTopForFloat(f, logicalTopForFloat(f) + f->m_paginationStrut);
}
}
setLogicalHeight(blockOffset + paginationStrut);
lineLeftOffset = logicalLeftOffsetForLine(logicalHeight(), firstLine);
lineRightOffset = logicalRightOffsetForLine(logicalHeight(), firstLine);
return didPosition;
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment