| Index: sky/engine/core/rendering/line/BreakingContextInlineHeaders.h
|
| diff --git a/sky/engine/core/rendering/line/BreakingContextInlineHeaders.h b/sky/engine/core/rendering/line/BreakingContextInlineHeaders.h
|
| index 6a9beb4b43a81f1c5ae9e11839f60ab7ad0b2da0..196acd6d4a53ef3f04dafc5e7706559d14215000 100644
|
| --- a/sky/engine/core/rendering/line/BreakingContextInlineHeaders.h
|
| +++ b/sky/engine/core/rendering/line/BreakingContextInlineHeaders.h
|
| @@ -99,8 +99,6 @@ public:
|
| }
|
|
|
| private:
|
| - void skipTrailingWhitespace(InlineIterator&, const LineInfo&);
|
| -
|
| InlineBidiResolver& m_resolver;
|
|
|
| InlineIterator m_current;
|
| @@ -185,40 +183,6 @@ inline bool requiresLineBox(const InlineIterator& it, const LineInfo& lineInfo =
|
| return notJustWhitespace || isEmptyInline(it.object());
|
| }
|
|
|
| -inline void setStaticPositions(RenderBlockFlow* block, RenderBox* child)
|
| -{
|
| - ASSERT(child->isOutOfFlowPositioned());
|
| - // FIXME: The math here is actually not really right. It's a best-guess approximation that
|
| - // will work for the common cases
|
| - RenderObject* containerBlock = child->container();
|
| - LayoutUnit blockHeight = block->logicalHeight();
|
| - if (containerBlock->isRenderInline()) {
|
| - // A relative positioned inline encloses us. In this case, we also have to determine our
|
| - // position as though we were an inline. Set |staticInlinePosition| and |staticBlockPosition| on the relative positioned
|
| - // inline so that we can obtain the value later.
|
| - toRenderInline(containerBlock)->layer()->setStaticInlinePosition(block->startAlignedOffsetForLine(false));
|
| - toRenderInline(containerBlock)->layer()->setStaticBlockPosition(blockHeight);
|
| - }
|
| - block->updateStaticInlinePositionForChild(child);
|
| - child->layer()->setStaticBlockPosition(blockHeight);
|
| -}
|
| -
|
| -// FIXME: The entire concept of the skipTrailingWhitespace function is flawed, since we really need to be building
|
| -// line boxes even for containers that may ultimately collapse away. Otherwise we'll never get positioned
|
| -// elements quite right. In other words, we need to build this function's work into the normal line
|
| -// object iteration process.
|
| -// NB. this function will insert any floating elements that would otherwise
|
| -// be skipped but it will not position them.
|
| -inline void BreakingContext::skipTrailingWhitespace(InlineIterator& iterator, const LineInfo& lineInfo)
|
| -{
|
| - while (!iterator.atEnd() && !requiresLineBox(iterator, lineInfo, TrailingWhitespace)) {
|
| - RenderObject* object = iterator.object();
|
| - if (object->isOutOfFlowPositioned())
|
| - setStaticPositions(m_block, toRenderBox(object));
|
| - iterator.increment();
|
| - }
|
| -}
|
| -
|
| inline void BreakingContext::initializeForCurrentObject()
|
| {
|
| m_currentStyle = m_current.object()->style();
|
| @@ -311,18 +275,10 @@ inline void BreakingContext::handleOutOfFlowPositioned(Vector<RenderBox*>& posit
|
| // If our original display wasn't an inline type, then we can
|
| // go ahead and determine our static inline position now.
|
| RenderBox* box = toRenderBox(m_current.object());
|
| - bool isInlineType = box->style()->isOriginalDisplayInlineType();
|
| - if (!isInlineType) {
|
| - m_block->setStaticInlinePositionForChild(box, m_block->startOffsetForContent());
|
| - } else {
|
| - // If our original display was an INLINE type, then we can go ahead
|
| - // and determine our static y position now.
|
| - box->layer()->setStaticBlockPosition(m_block->logicalHeight());
|
| - }
|
|
|
| // If we're ignoring spaces, we have to stop and include this object and
|
| // then start ignoring spaces again.
|
| - if (isInlineType || box->container()->isRenderInline()) {
|
| + if (box->style()->isOriginalDisplayInlineType() || box->container()->isRenderInline()) {
|
| if (m_ignoringSpaces)
|
| m_lineMidpointState.ensureLineBoxInsideIgnoredSpaces(box);
|
| m_trailingObjects.appendObjectIfNeeded(box);
|
| @@ -591,12 +547,10 @@ inline bool BreakingContext::handleText(WordMeasurements& wordMeasurements, bool
|
| // Check if line is too big even without the extra space
|
| // at the end of the line. If it is not, do nothing.
|
| // If the line needs the extra whitespace to be too long,
|
| - // then move the line break to the space and skip all
|
| - // additional whitespace.
|
| + // then move the line break to the space.
|
| if (!m_width.fitsOnLine(charWidth)) {
|
| lineWasTooWide = true;
|
| m_lineBreak.moveTo(m_current.object(), m_current.offset(), m_current.nextBreakablePosition());
|
| - skipTrailingWhitespace(m_lineBreak, m_lineInfo);
|
| }
|
| }
|
| if (lineWasTooWide || !m_width.fitsOnLine()) {
|
|
|