Title: [285860] trunk/Source/WebCore
- Revision
- 285860
- Author
- [email protected]
- Date
- 2021-11-16 07:07:51 -0800 (Tue, 16 Nov 2021)
Log Message
[LFC][IFC] Fix fast/text/text-indent-inside-float.html
https://bugs.webkit.org/show_bug.cgi?id=233163
Reviewed by Antti Koivisto.
Percentages must be treated as 0 for the purpose of calculating intrinsic size contributions.
https://drafts.csswg.org/css-text/#text-indent-property
Note that this patch is in preparation for enabling IFC preferred width computation.
* layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::LineBuilder::initialConstraintsForLine const):
* layout/formattingContexts/inline/InlineLineBuilder.h: Add an "intrinsic mode" which will also be used
for other, preferred width computation specific properties and values.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (285859 => 285860)
--- trunk/Source/WebCore/ChangeLog 2021-11-16 14:38:18 UTC (rev 285859)
+++ trunk/Source/WebCore/ChangeLog 2021-11-16 15:07:51 UTC (rev 285860)
@@ -1,3 +1,21 @@
+2021-11-16 Alan Bujtas <[email protected]>
+
+ [LFC][IFC] Fix fast/text/text-indent-inside-float.html
+ https://bugs.webkit.org/show_bug.cgi?id=233163
+
+ Reviewed by Antti Koivisto.
+
+ Percentages must be treated as 0 for the purpose of calculating intrinsic size contributions.
+ https://drafts.csswg.org/css-text/#text-indent-property
+
+ Note that this patch is in preparation for enabling IFC preferred width computation.
+
+ * layout/formattingContexts/inline/InlineLineBuilder.cpp:
+ (WebCore::Layout::LineBuilder::LineBuilder):
+ (WebCore::Layout::LineBuilder::initialConstraintsForLine const):
+ * layout/formattingContexts/inline/InlineLineBuilder.h: Add an "intrinsic mode" which will also be used
+ for other, preferred width computation specific properties and values.
+
2021-11-16 Chris Lord <[email protected]>
[GTK][WPE] displayDidRefresh can shortcut waking up the scrolling thread
Modified: trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp (285859 => 285860)
--- trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp 2021-11-16 14:38:18 UTC (rev 285859)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp 2021-11-16 15:07:51 UTC (rev 285860)
@@ -268,8 +268,9 @@
return boxGeometry.marginBoxWidth();
}
-LineBuilder::LineBuilder(InlineFormattingContext& inlineFormattingContext, FloatingState& floatingState, HorizontalConstraints rootHorizontalConstraints, const InlineItems& inlineItems)
- : m_inlineFormattingContext(inlineFormattingContext)
+LineBuilder::LineBuilder(InlineFormattingContext& inlineFormattingContext, FloatingState& floatingState, HorizontalConstraints rootHorizontalConstraints, const InlineItems& inlineItems, IsIntrinsicWidthMode isIntrinsicWidthMode)
+ : m_isIntrinsicWidthMode(isIntrinsicWidthMode == IsIntrinsicWidthMode::Yes)
+ , m_inlineFormattingContext(inlineFormattingContext)
, m_inlineFormattingState(&inlineFormattingContext.formattingState())
, m_floatingState(&floatingState)
, m_rootHorizontalConstraints(rootHorizontalConstraints)
@@ -278,8 +279,9 @@
{
}
-LineBuilder::LineBuilder(const InlineFormattingContext& inlineFormattingContext, const InlineItems& inlineItems)
- : m_inlineFormattingContext(inlineFormattingContext)
+LineBuilder::LineBuilder(const InlineFormattingContext& inlineFormattingContext, const InlineItems& inlineItems, IsIntrinsicWidthMode isIntrinsicWidthMode)
+ : m_isIntrinsicWidthMode(isIntrinsicWidthMode == IsIntrinsicWidthMode::Yes)
+ , m_inlineFormattingContext(inlineFormattingContext)
, m_line(inlineFormattingContext)
, m_inlineItems(inlineItems)
{
@@ -547,6 +549,11 @@
auto textIndent = root.style().textIndent();
if (textIndent == RenderStyle::initialTextIndent())
return { };
+ if (m_isIntrinsicWidthMode && textIndent.isPercent()) {
+ // Percentages must be treated as 0 for the purpose of calculating intrinsic size contributions.
+ // https://drafts.csswg.org/css-text/#text-indent-property
+ return { };
+ }
return { minimumValueForLength(textIndent, initialLineLogicalRect.width()) };
};
lineLogicalLeft += computedTextIndent();
Modified: trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h (285859 => 285860)
--- trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h 2021-11-16 14:38:18 UTC (rev 285859)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h 2021-11-16 15:07:51 UTC (rev 285860)
@@ -39,8 +39,9 @@
class LineBuilder {
public:
- LineBuilder(InlineFormattingContext&, FloatingState&, HorizontalConstraints rootHorizontalConstraints, const InlineItems&);
- LineBuilder(const InlineFormattingContext&, const InlineItems&);
+ enum class IsIntrinsicWidthMode { No, Yes };
+ LineBuilder(InlineFormattingContext&, FloatingState&, HorizontalConstraints rootHorizontalConstraints, const InlineItems&, IsIntrinsicWidthMode = IsIntrinsicWidthMode::No);
+ LineBuilder(const InlineFormattingContext&, const InlineItems&, IsIntrinsicWidthMode = IsIntrinsicWidthMode::Yes);
struct InlineItemRange {
bool isEmpty() const { return start == end; }
@@ -120,6 +121,7 @@
private:
bool m_isFirstLine { false };
+ bool m_isIntrinsicWidthMode { false };
const InlineFormattingContext& m_inlineFormattingContext;
InlineFormattingState* m_inlineFormattingState { nullptr };
FloatingState* m_floatingState { nullptr };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes