Modified: trunk/Source/WebCore/ChangeLog (285107 => 285108)
--- trunk/Source/WebCore/ChangeLog 2021-11-01 15:58:18 UTC (rev 285107)
+++ trunk/Source/WebCore/ChangeLog 2021-11-01 16:02:28 UTC (rev 285108)
@@ -1,5 +1,13 @@
2021-11-01 Alan Bujtas <[email protected]>
+ Addressing post-commit comment (r285093).
+
+ * layout/formattingContexts/inline/InlineItemsBuilder.cpp:
+ (WebCore::Layout::InlineItemsBuilder::handleInlineBoxStart):
+ (WebCore::Layout::InlineItemsBuilder::handleInlineBoxEnd):
+
+2021-11-01 Alan Bujtas <[email protected]>
+
[LFC][IFC] Introduce paragraph content building to InlineItemsBuilder::handleTextContent
https://bugs.webkit.org/show_bug.cgi?id=232546
Modified: trunk/Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp (285107 => 285108)
--- trunk/Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp 2021-11-01 15:58:18 UTC (rev 285107)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp 2021-11-01 16:02:28 UTC (rev 285108)
@@ -265,9 +265,6 @@
return;
auto isLeftToRightDirection = style.isLeftToRightDirection();
- auto enteringContentControlChar = std::optional<UChar> { };
- auto nestedContentControlChar = std::optional<UChar> { };
-
switch (style.unicodeBidi()) {
case EUnicodeBidi::UBNormal:
// The box does not open an additional level of embedding with respect to the bidirectional algorithm.
@@ -274,29 +271,24 @@
// For inline boxes, implicit reordering works across box boundaries.
break;
case EUnicodeBidi::Embed:
- enteringContentControlChar = isLeftToRightDirection ? leftToRightEmbed : rightToLeftEmbed;
+ enterBidiContext(inlineBox, isLeftToRightDirection ? leftToRightEmbed : rightToLeftEmbed, inlineItems);
break;
case EUnicodeBidi::Override:
- enteringContentControlChar = isLeftToRightDirection ? leftToRightOverride : rightToLeftOverride;
+ enterBidiContext(inlineBox, isLeftToRightDirection ? leftToRightOverride : rightToLeftOverride, inlineItems);
break;
case EUnicodeBidi::Isolate:
- enteringContentControlChar = isLeftToRightDirection ? leftToRightIsolate : rightToLeftIsolate;
+ enterBidiContext(inlineBox, isLeftToRightDirection ? leftToRightIsolate : rightToLeftIsolate, inlineItems);
break;
case EUnicodeBidi::Plaintext:
- enteringContentControlChar = firstStrongIsolate;
+ enterBidiContext(inlineBox, firstStrongIsolate, inlineItems);
break;
case EUnicodeBidi::IsolateOverride:
- enteringContentControlChar = firstStrongIsolate;
- nestedContentControlChar = isLeftToRightDirection ? leftToRightOverride : rightToLeftOverride;
+ enterBidiContext(inlineBox, firstStrongIsolate, inlineItems);
+ enterBidiContext(inlineBox, isLeftToRightDirection ? leftToRightOverride : rightToLeftOverride, inlineItems);
break;
default:
ASSERT_NOT_REACHED();
}
-
- if (enteringContentControlChar)
- enterBidiContext(inlineBox, *enteringContentControlChar, inlineItems);
- if (nestedContentControlChar)
- enterBidiContext(inlineBox, *nestedContentControlChar, inlineItems);
}
void InlineItemsBuilder::handleInlineBoxEnd(const Box& inlineBox, InlineItems& inlineItems)
@@ -307,9 +299,6 @@
if (style.rtlOrdering() == Order::Visual)
return;
- auto exitingContentControlChar = std::optional<UChar> { };
- auto nestedContentControlChar = std::optional<UChar> { };
-
switch (style.unicodeBidi()) {
case EUnicodeBidi::UBNormal:
// The box does not open an additional level of embedding with respect to the bidirectional algorithm.
@@ -316,29 +305,24 @@
// For inline boxes, implicit reordering works across box boundaries.
break;
case EUnicodeBidi::Embed:
- exitingContentControlChar = popDirectionalFormatting;
+ exitBidiContext(inlineBox, popDirectionalFormatting);
break;
case EUnicodeBidi::Override:
- exitingContentControlChar = popDirectionalFormatting;
+ exitBidiContext(inlineBox, popDirectionalFormatting);
break;
case EUnicodeBidi::Isolate:
- exitingContentControlChar = popDirectionalIsolate;
+ exitBidiContext(inlineBox, popDirectionalIsolate);
break;
case EUnicodeBidi::Plaintext:
- exitingContentControlChar = popDirectionalIsolate;
+ exitBidiContext(inlineBox, popDirectionalIsolate);
break;
case EUnicodeBidi::IsolateOverride:
- nestedContentControlChar = popDirectionalFormatting;
- exitingContentControlChar = popDirectionalIsolate;
+ exitBidiContext(inlineBox, popDirectionalFormatting);
+ exitBidiContext(inlineBox, popDirectionalIsolate);
break;
default:
ASSERT_NOT_REACHED();
}
-
- if (nestedContentControlChar)
- exitBidiContext(inlineBox, *nestedContentControlChar);
- if (exitingContentControlChar)
- exitBidiContext(inlineBox, *exitingContentControlChar);
}
void InlineItemsBuilder::handleInlineLevelBox(const Box& layoutBox, InlineItems& inlineItems)