WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-243303-20220729135657.patch (text/plain), 4.38 KB, created by
alan
on 2022-07-29 13:56:58 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
alan
Created:
2022-07-29 13:56:58 PDT
Size:
4.38 KB
patch
obsolete
>From 9b69cf4beec1dee499983657d4f02588b769f4af Mon Sep 17 00:00:00 2001 >From: Zalan Bujtas <zalan@apple.com> >Date: Fri, 29 Jul 2022 13:44:13 -0700 >Subject: [PATCH] [IFC][Integration] Enable vertical list items for IFC > https://bugs.webkit.org/show_bug.cgi?id=243303 > >Reviewed by Antti Koivisto. > >While list markers form atomic inline level boxes, they behave as text when it comes to computing their layout bounds. This patch fixes the ideographic case for vertical writing modes. > >* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp: >(WebCore::Layout::LineBoxBuilder::adjustIdeographicBaselineIfApplicable): >* Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp: >(WebCore::LayoutIntegration::canUseForChild): >(WebCore::LayoutIntegration::canUseForLineLayoutWithReason): >--- > .../formattingContexts/inline/InlineLineBoxBuilder.cpp | 8 ++++---- > .../layout/integration/LayoutIntegrationCoverage.cpp | 4 ++-- > 2 files changed, 6 insertions(+), 6 deletions(-) > >diff --git a/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp b/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp >index 75a2416e3319..5b4bee9013e6 100644 >--- a/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp >+++ b/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp >@@ -434,14 +434,14 @@ void LineBoxBuilder::adjustIdeographicBaselineIfApplicable(LineBox& lineBox, siz > auto layoutBoundsPrimaryMetrics = LayoutBoundsMetrics { }; > if (inlineLevelBox.isInlineBox()) > layoutBoundsPrimaryMetrics = layoutBoundsPrimaryMetricsForInlineBox(inlineLevelBox, IdeographicBaseline); >- else if (inlineLevelBox.isAtomicInlineLevelBox()) { >+ else if (inlineLevelBox.isListMarker() || inlineLevelBox.isLineBreakBox()) { >+ auto& parentInlineBox = lineBox.inlineLevelBoxForLayoutBox(inlineLevelBox.layoutBox().parent()); >+ layoutBoundsPrimaryMetrics = layoutBoundsPrimaryMetricsForInlineBox(parentInlineBox, IdeographicBaseline); >+ } else if (inlineLevelBox.isAtomicInlineLevelBox()) { > auto inlineLevelBoxHeight = inlineLevelBox.layoutBounds().height(); > InlineLayoutUnit ideographicBaseline = roundToInt(inlineLevelBoxHeight / 2); > // Move the baseline position but keep the same logical height. > layoutBoundsPrimaryMetrics = { ideographicBaseline, inlineLevelBoxHeight - ideographicBaseline }; >- } else if (inlineLevelBox.isLineBreakBox()) { >- auto& parentInlineBox = lineBox.inlineLevelBoxForLayoutBox(inlineLevelBox.layoutBox().parent()); >- layoutBoundsPrimaryMetrics = layoutBoundsPrimaryMetricsForInlineBox(parentInlineBox, IdeographicBaseline); > } > setBaselineAndLayoutBounds(inlineLevelBox, layoutBoundsPrimaryMetrics); > >diff --git a/Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp b/Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp >index 11f7b7950c28..dde350dccd1a 100644 >--- a/Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp >+++ b/Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp >@@ -407,7 +407,7 @@ static OptionSet<AvoidanceReason> canUseForChild(const RenderObject& child, Incl > } > > if (is<RenderListItem>(child)) { >- if (!child.style().isHorizontalWritingMode() || !child.style().isLeftToRightDirection() || child.isPositioned() || child.isFloating()) >+ if (!child.style().isLeftToRightDirection() || child.isPositioned() || child.isFloating()) > SET_REASON_AND_RETURN_IF_NEEDED(FlowIsUnsupportedListItem, reasons, includeReasons); > return reasons; > } >@@ -496,7 +496,7 @@ OptionSet<AvoidanceReason> canUseForLineLayoutWithReason(const RenderBlockFlow& > } > if (flow.isRubyText() || flow.isRubyBase()) > SET_REASON_AND_RETURN_IF_NEEDED(ContentIsRuby, reasons, includeReasons); >- if (is<RenderListItem>(flow) && (!flow.style().isHorizontalWritingMode() || !flow.style().isLeftToRightDirection() || flow.isPositioned() || flow.isFloating())) >+ if (is<RenderListItem>(flow) && (!flow.style().isLeftToRightDirection() || flow.isPositioned() || flow.isFloating())) > SET_REASON_AND_RETURN_IF_NEEDED(FlowIsUnsupportedListItem, reasons, includeReasons); > if (!flow.style().hangingPunctuation().isEmpty()) > SET_REASON_AND_RETURN_IF_NEEDED(FlowHasHangingPunctuation, reasons, includeReasons);
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 243303
:
461294
|
461300
|
461306
|
461310
|
461311
|
461313
|
461325