WebKit Bugzilla
Attachment 372336 Details for
Bug 198961
: [LFC][IFC] Line::append() should take care of all the inline types.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198961-20190618070532.patch (text/plain), 6.87 KB, created by
zalan
on 2019-06-18 07:05:32 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2019-06-18 07:05:32 PDT
Size:
6.87 KB
patch
obsolete
>Subversion Revision: 246492 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index e998e56ca2e67e5a9ba1abd7f3a0228d3d739e87..ad0822dd0ead93bb23f3fd6dc952f8342d0fb653 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,21 @@ >+2019-06-18 Zalan Bujtas <zalan@apple.com> >+ >+ [LFC][IFC] Line::append() should take care of all the inline types. >+ https://bugs.webkit.org/show_bug.cgi?id=198961 >+ <rdar://problem/51847712> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Make all the existing Line::append* functions private. >+ >+ * layout/FormattingContextGeometry.cpp: >+ (WebCore::Layout::staticHorizontalPositionForOutOfFlowPositioned): fix a typo. >+ * layout/inlineformatting/InlineFormattingContextLineLayout.cpp: >+ (WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const): >+ * layout/inlineformatting/InlineLine.cpp: >+ (WebCore::Layout::Line::append): >+ * layout/inlineformatting/InlineLine.h: >+ > 2019-06-16 Darin Adler <darin@apple.com> > > Convert some uses of fixed width and fixed precision floating point formatting to use shortest instead >diff --git a/Source/WebCore/layout/FormattingContextGeometry.cpp b/Source/WebCore/layout/FormattingContextGeometry.cpp >index 18ea86f94d6cc9c2a2a7d065d1995051d506912d..45600e0521ed54480d243e311d45b0c4d062665f 100644 >--- a/Source/WebCore/layout/FormattingContextGeometry.cpp >+++ b/Source/WebCore/layout/FormattingContextGeometry.cpp >@@ -233,7 +233,7 @@ static LayoutUnit staticHorizontalPositionForOutOfFlowPositioned(const LayoutSta > ASSERT(!container->isPositioned() || layoutBox.isFixedPositioned()); > } > // Move the static position relative to the padding box. This is very specific to abolutely positioned boxes. >- auto paddingBoxLeft = layoutState.displayBoxForLayoutBox(containingBlock).paddingBoxTop(); >+ auto paddingBoxLeft = layoutState.displayBoxForLayoutBox(containingBlock).paddingBoxLeft(); > return left - paddingBoxLeft; > } > >diff --git a/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp b/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp >index b5a34b3a480b05e479a89f9633c4e2628434536e..49451000929afc74a49c1eec3400edf485167db5 100644 >--- a/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp >+++ b/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp >@@ -143,21 +143,8 @@ InlineFormattingContext::LineLayout::LineContent InlineFormattingContext::LineLa > if (uncommittedContent.isEmpty()) > return; > committedInlineItemCount += uncommittedContent.size(); >- for (auto& uncommittedRun : uncommittedContent.runs()) { >- auto& inlineItem = uncommittedRun.inlineItem; >- if (inlineItem.isHardLineBreak()) >- line->appendHardLineBreak(inlineItem); >- else if (is<InlineTextItem>(inlineItem)) >- line->appendTextContent(downcast<InlineTextItem>(inlineItem), uncommittedRun.logicalWidth); >- else if (inlineItem.isContainerStart()) >- line->appendInlineContainerStart(inlineItem, uncommittedRun.logicalWidth); >- else if (inlineItem.isContainerEnd()) >- line->appendInlineContainerEnd(inlineItem, uncommittedRun.logicalWidth); >- else if (inlineItem.layoutBox().isReplaced()) >- line->appendReplacedInlineBox(inlineItem, uncommittedRun.logicalWidth); >- else >- line->appendNonReplacedInlineBox(inlineItem, uncommittedRun.logicalWidth); >- } >+ for (auto& uncommittedRun : uncommittedContent.runs()) >+ line->append(uncommittedRun.inlineItem, uncommittedRun.logicalWidth); > uncommittedContent.reset(); > }; > >diff --git a/Source/WebCore/layout/inlineformatting/InlineLine.cpp b/Source/WebCore/layout/inlineformatting/InlineLine.cpp >index 2a6356d26b19e19bd1afffe795c585eb93ffbf8b..0d810867535223df92ff9a850136a0f0a07a197c 100644 >--- a/Source/WebCore/layout/inlineformatting/InlineLine.cpp >+++ b/Source/WebCore/layout/inlineformatting/InlineLine.cpp >@@ -193,6 +193,21 @@ LayoutUnit Line::trailingTrimmableWidth() const > return trimmableWidth; > } > >+void Line::append(const InlineItem& inlineItem, LayoutUnit logicalWidth) >+{ >+ if (inlineItem.isHardLineBreak()) >+ return appendHardLineBreak(inlineItem); >+ if (is<InlineTextItem>(inlineItem)) >+ return appendTextContent(downcast<InlineTextItem>(inlineItem), logicalWidth); >+ if (inlineItem.isContainerStart()) >+ return appendInlineContainerStart(inlineItem, logicalWidth); >+ if (inlineItem.isContainerEnd()) >+ return appendInlineContainerEnd(inlineItem, logicalWidth); >+ if (inlineItem.layoutBox().isReplaced()) >+ return appendReplacedInlineBox(inlineItem, logicalWidth); >+ appendNonReplacedInlineBox(inlineItem, logicalWidth); >+} >+ > void Line::appendNonBreakableSpace(const InlineItem& inlineItem, const Display::Rect& logicalRect) > { > m_content->runs().append(std::make_unique<Content::Run>(inlineItem, logicalRect, Content::Run::TextContext { }, false, false)); >diff --git a/Source/WebCore/layout/inlineformatting/InlineLine.h b/Source/WebCore/layout/inlineformatting/InlineLine.h >index c25b7b57a0c8cbfb247bd213965fd37ae90f0bc8..7b6cb1140f357b9699f11d678cd2b2e9694991c2 100644 >--- a/Source/WebCore/layout/inlineformatting/InlineLine.h >+++ b/Source/WebCore/layout/inlineformatting/InlineLine.h >@@ -85,13 +85,7 @@ public: > }; > std::unique_ptr<Content> close(); > >- void appendTextContent(const InlineTextItem&, LayoutUnit logicalWidth); >- void appendNonReplacedInlineBox(const InlineItem&, LayoutUnit logicalWidth); >- void appendReplacedInlineBox(const InlineItem&, LayoutUnit logicalWidth); >- void appendInlineContainerStart(const InlineItem&, LayoutUnit logicalWidth); >- void appendInlineContainerEnd(const InlineItem&, LayoutUnit logicalWidth); >- void appendHardLineBreak(const InlineItem&); >- >+ void append(const InlineItem&, LayoutUnit logicalWidth); > bool hasContent() const { return !isVisuallyEmpty(); } > > LayoutUnit trailingTrimmableWidth() const; >@@ -118,6 +112,13 @@ private: > LayoutUnit baselineOffset() const { return m_baseline.ascent + m_baselineTop; } > > void appendNonBreakableSpace(const InlineItem&, const Display::Rect& logicalRect); >+ void appendTextContent(const InlineTextItem&, LayoutUnit logicalWidth); >+ void appendNonReplacedInlineBox(const InlineItem&, LayoutUnit logicalWidth); >+ void appendReplacedInlineBox(const InlineItem&, LayoutUnit logicalWidth); >+ void appendInlineContainerStart(const InlineItem&, LayoutUnit logicalWidth); >+ void appendInlineContainerEnd(const InlineItem&, LayoutUnit logicalWidth); >+ void appendHardLineBreak(const InlineItem&); >+ > void removeTrailingTrimmableContent(); > > void adjustBaselineAndLineHeight(const InlineItem&, LayoutUnit runHeight);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198961
: 372336