Changeset 180944 in webkit
- Timestamp:
- Mar 3, 2015 11:13:13 AM (9 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r180934 r180944 1 2015-03-03 Myles C. Maxfield <mmaxfield@apple.com> 2 3 BreakingContext cleanup 4 https://bugs.webkit.org/show_bug.cgi?id=142146 5 6 Reviewed by Dean Jackson. 7 8 1. Use commitLineBreakAtCurrentWidth() instead of directly 9 updating m_width and m_lineBreak, because the name makes the 10 intent clearer. 11 2. Remove duplicate function LineBreaker::nextSegmentBreak(). 12 3. lineStyle() takes care of inspecting RenderText's parent's 13 style. 14 4. Add FIXME to BreakingContext::initializeForCurrentObject() 15 because it seems like we are ignoring first-line style for 16 some properties. 17 18 No new tests because there is no behavior change. 19 20 * rendering/line/BreakingContextInlineHeaders.h: 21 (WebCore::BreakingContext::BreakingContext): 22 (WebCore::BreakingContext::initializeForCurrentObject): 23 (WebCore::BreakingContext::handleReplaced): 24 (WebCore::BreakingContext::handleText): 25 (WebCore::BreakingContext::commitAndUpdateLineBreakIfNeeded): 26 (WebCore::BreakingContext::handleEndOfLine): 27 * rendering/line/LineBreaker.cpp: 28 (WebCore::LineBreaker::nextLineBreak): Deleted. 29 (WebCore::LineBreaker::nextSegmentBreak): Deleted. 30 * rendering/line/LineBreaker.h: 31 * rendering/line/LineInlineHeaders.h: 32 (WebCore::lineStyle): 33 1 34 2015-03-03 Chris Dumez <cdumez@apple.com> 2 35 -
trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h
r179366 r180944 72 72 , m_block(block) 73 73 , m_lastObject(m_current.renderer()) 74 , m_nextObject( 0)75 , m_currentStyle( 0)74 , m_nextObject(nullptr) 75 , m_currentStyle(nullptr) 76 76 , m_blockStyle(block.style()) 77 77 , m_lineInfo(inLineInfo) … … 145 145 RenderObject* m_nextObject; 146 146 147 RenderStyle* m_currentStyle;147 const RenderStyle* m_currentStyle; 148 148 149 149 // Firefox and Opera will allow a table cell to grow to fit an image inside it under … … 195 195 m_hadUncommittedWidthBeforeCurrent = !!m_width.uncommittedWidth(); 196 196 197 m_currentStyle = &m_current.renderer()->style(); 197 m_currentStyle = &m_current.renderer()->style(); // FIXME: Should this be &lineStyle(*m_current.renderer(), m_lineInfo); ? 198 198 199 199 ASSERT(m_currentStyle); … … 425 425 if ((m_autoWrap || RenderStyle::autoWrap(m_lastWS)) && (!m_current.renderer()->isImage() || m_allowImagesToBreak) 426 426 && (!m_current.renderer()->isRubyRun() || downcast<RenderRubyRun>(m_current.renderer())->canBreakBefore(m_renderTextInfo.m_lineBreakIterator))) { 427 m_width.commit(); 428 m_lineBreak.moveToStartOf(m_current.renderer()); 427 commitLineBreakAtCurrentWidth(*m_current.renderer()); 429 428 } 430 429 … … 619 618 } 620 619 621 const RenderStyle& style = lineStyle( *renderText.parent(), m_lineInfo);620 const RenderStyle& style = lineStyle(renderText, m_lineInfo); 622 621 const FontCascade& font = style.fontCascade(); 623 622 bool isFixedPitch = font.isFixedPitch(); … … 808 807 if (!stoppedIgnoringSpaces && m_current.offset()) 809 808 ensureCharacterGetsLineBox(m_lineMidpointState, m_current); 810 m_lineBreak.moveTo(m_current.renderer(), m_current.offset(), m_current.nextBreakablePosition());809 commitLineBreakAtCurrentWidth(*m_current.renderer(), m_current.offset(), m_current.nextBreakablePosition()); 811 810 m_lineBreak.increment(); 812 811 m_lineInfo.setPreviousLineBrokeCleanly(true); … … 815 814 816 815 if (m_autoWrap && betweenWords) { 817 m_width.commit();816 commitLineBreakAtCurrentWidth(*m_current.renderer(), m_current.offset(), m_current.nextBreakablePosition()); 818 817 wrapW = 0; 819 m_lineBreak.moveTo(m_current.renderer(), m_current.offset(), m_current.nextBreakablePosition());820 818 // Auto-wrapping text should not wrap in the middle of a word once it has had an 821 819 // opportunity to break after a word. … … 1012 1010 m_lastObject = m_current.renderer(); 1013 1011 if (m_lastObject->isReplaced() && m_autoWrap && !m_lastObject->isRubyRun() && (!m_lastObject->isImage() || m_allowImagesToBreak) && (!is<RenderListMarker>(*m_lastObject) || downcast<RenderListMarker>(*m_lastObject).isInside())) { 1014 m_width.commit(); 1015 m_lineBreak.moveToStartOf(m_nextObject); 1012 commitLineBreakAtCurrentWidth(*m_nextObject); 1016 1013 } 1017 1014 } … … 1047 1044 if (!m_lineBreak.renderer() || !m_lineBreak.renderer()->isBR()) { 1048 1045 // we just add as much as possible 1049 if (m_blockStyle.whiteSpace() == PRE && !m_current.offset()) {1050 m_lineBreak.moveTo(m_lastObject, m_lastObject->isText() ? m_lastObject->length() : 0);1051 }else if (m_lineBreak.renderer()) {1046 if (m_blockStyle.whiteSpace() == PRE && !m_current.offset()) 1047 commitLineBreakAtCurrentWidth(*m_lastObject, m_lastObject->isText() ? m_lastObject->length() : 0); 1048 else if (m_lineBreak.renderer()) { 1052 1049 // Don't ever break in the middle of a word if we can help it. 1053 1050 // There's no room at all. We just have to be on this line, 1054 1051 // even though we'll spill out. 1055 m_lineBreak.moveTo(m_current.renderer(), m_current.offset());1052 commitLineBreakAtCurrentWidth(*m_current.renderer(), m_current.offset()); 1056 1053 } 1057 1054 } -
trunk/Source/WebCore/rendering/line/LineBreaker.cpp
r174875 r180944 80 80 InlineIterator LineBreaker::nextLineBreak(InlineBidiResolver& resolver, LineInfo& lineInfo, RenderTextInfo& renderTextInfo, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements& wordMeasurements) 81 81 { 82 return nextSegmentBreak(resolver, lineInfo, renderTextInfo, lastFloatFromPreviousLine, consecutiveHyphenatedLines, wordMeasurements);83 }84 85 InlineIterator LineBreaker::nextSegmentBreak(InlineBidiResolver& resolver, LineInfo& lineInfo, RenderTextInfo& renderTextInfo, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements& wordMeasurements)86 {87 82 reset(); 88 83 -
trunk/Source/WebCore/rendering/line/LineBreaker.h
r178510 r180944 65 65 void reset(); 66 66 67 InlineIterator nextSegmentBreak(InlineBidiResolver&, LineInfo&, RenderTextInfo&, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements&);68 67 void skipTrailingWhitespace(InlineIterator&, const LineInfo&); 69 68 void skipLeadingWhitespace(InlineBidiResolver&, LineInfo&, FloatingObject* lastFloatFromPreviousLine, LineWidth&); -
trunk/Source/WebCore/rendering/line/LineInlineHeaders.h
r178510 r180944 44 44 } 45 45 46 inline const RenderStyle& lineStyle(const Render Element& renderer, const LineInfo& lineInfo)46 inline const RenderStyle& lineStyle(const RenderObject& renderer, const LineInfo& lineInfo) 47 47 { 48 48 return lineInfo.isFirstLine() ? renderer.firstLineStyle() : renderer.style();
Note: See TracChangeset
for help on using the changeset viewer.