Diff
Modified: trunk/Source/WebCore/ChangeLog (246538 => 246539)
--- trunk/Source/WebCore/ChangeLog 2019-06-18 15:16:33 UTC (rev 246538)
+++ trunk/Source/WebCore/ChangeLog 2019-06-18 15:23:47 UTC (rev 246539)
@@ -1,3 +1,21 @@
+2019-06-18 Zalan Bujtas <za...@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 Antti Koivisto.
+
+ 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-18 Simon Fraser <simon.fra...@apple.com>
Convert macOS to scroll by changing layer boundsOrigin
Modified: trunk/Source/WebCore/layout/FormattingContextGeometry.cpp (246538 => 246539)
--- trunk/Source/WebCore/layout/FormattingContextGeometry.cpp 2019-06-18 15:16:33 UTC (rev 246538)
+++ trunk/Source/WebCore/layout/FormattingContextGeometry.cpp 2019-06-18 15:23:47 UTC (rev 246539)
@@ -233,7 +233,7 @@
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;
}
Modified: trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp (246538 => 246539)
--- trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp 2019-06-18 15:16:33 UTC (rev 246538)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp 2019-06-18 15:23:47 UTC (rev 246539)
@@ -143,21 +143,8 @@
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();
};
Modified: trunk/Source/WebCore/layout/inlineformatting/InlineLine.cpp (246538 => 246539)
--- trunk/Source/WebCore/layout/inlineformatting/InlineLine.cpp 2019-06-18 15:16:33 UTC (rev 246538)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineLine.cpp 2019-06-18 15:23:47 UTC (rev 246539)
@@ -193,6 +193,21 @@
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));
Modified: trunk/Source/WebCore/layout/inlineformatting/InlineLine.h (246538 => 246539)
--- trunk/Source/WebCore/layout/inlineformatting/InlineLine.h 2019-06-18 15:16:33 UTC (rev 246538)
+++ trunk/Source/WebCore/layout/inlineformatting/InlineLine.h 2019-06-18 15:23:47 UTC (rev 246539)
@@ -85,13 +85,7 @@
};
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 @@
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);