Title: [287260] trunk/Source/WebCore
Revision
287260
Author
za...@apple.com
Date
2021-12-20 08:01:01 -0800 (Mon, 20 Dec 2021)

Log Message

[LFC][IFC] Adjust the atomic/generic inline level boxes with marginLeft in RTL
https://bugs.webkit.org/show_bug.cgi?id=234502

Reviewed by Antti Koivisto.

* layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::adjustVisualGeometryForDisplayBox):
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (287259 => 287260)


--- trunk/Source/WebCore/ChangeLog	2021-12-20 15:11:46 UTC (rev 287259)
+++ trunk/Source/WebCore/ChangeLog	2021-12-20 16:01:01 UTC (rev 287260)
@@ -1,5 +1,16 @@
 2021-12-20  Alan Bujtas  <za...@apple.com>
 
+        [LFC][IFC] Adjust the atomic/generic inline level boxes with marginLeft in RTL
+        https://bugs.webkit.org/show_bug.cgi?id=234502
+
+        Reviewed by Antti Koivisto.
+
+        * layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:
+        (WebCore::Layout::InlineDisplayContentBuilder::adjustVisualGeometryForDisplayBox):
+        (WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
+
+2021-12-20  Alan Bujtas  <za...@apple.com>
+
         [LFC][IFC] InlineDisplay::Line has physical geometry
         https://bugs.webkit.org/show_bug.cgi?id=234490
 

Modified: trunk/Source/WebCore/layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp (287259 => 287260)


--- trunk/Source/WebCore/layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp	2021-12-20 15:11:46 UTC (rev 287259)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp	2021-12-20 16:01:01 UTC (rev 287260)
@@ -467,12 +467,21 @@
     auto& layoutBox = displayBox.layoutBox();
 
     if (!displayBox.isNonRootInlineBox()) {
-        displayBox.setLeft(contentRightInVisualOrder);
         if (displayBox.isAtomicInlineLevelBox() || displayBox.isGenericInlineLevelBox()) {
-            formattingState().boxGeometry(layoutBox).setLogicalLeft(LayoutUnit { contentRightInVisualOrder });
-            contentRightInVisualOrder += displayBox.width() + marginRight(formattingState().boxGeometry(layoutBox), layoutBox.parent().style().isLeftToRightDirection());
-        } else
+            auto isLeftToRightDirection = layoutBox.parent().style().isLeftToRightDirection();
+            auto& boxGeometry = formattingState().boxGeometry(layoutBox);
+            auto boxMarginLeft = marginLeft(boxGeometry, isLeftToRightDirection);
+            auto boxMarginRight = marginRight(boxGeometry, isLeftToRightDirection);
+
+            auto borderBoxLeft = LayoutUnit { contentRightInVisualOrder + boxMarginLeft };
+            boxGeometry.setLogicalLeft(borderBoxLeft);
+            displayBox.setLeft(borderBoxLeft);
+
+            contentRightInVisualOrder += boxMarginLeft + displayBox.width() + boxMarginRight;
+        } else {
+            displayBox.setLeft(contentRightInVisualOrder);
             contentRightInVisualOrder += displayBox.width();
+        }
         return;
     }
 
@@ -577,9 +586,12 @@
             if (lineRun.isBox()) {
                 auto& boxGeometry = formattingState().boxGeometry(layoutBox);
                 auto visualRect = visualRectRelativeToRoot(lineBox.logicalBorderBoxForAtomicInlineLevelBox(layoutBox, boxGeometry));
-                visualRect.moveHorizontally(boxGeometry.marginStart());
+
+                auto isLeftToRightDirection = layoutBox.parent().style().isLeftToRightDirection();
+                auto boxMarginLeft = marginLeft(boxGeometry, isLeftToRightDirection);
+                visualRect.moveHorizontally(boxMarginLeft);
                 appendAtomicInlineLevelDisplayBox(lineRun, visualRect, boxes);
-                contentRightInVisualOrder += boxGeometry.marginStart() + visualRect.width() + boxGeometry.marginEnd();
+                contentRightInVisualOrder += boxMarginLeft + visualRect.width() + marginRight(boxGeometry, isLeftToRightDirection);
                 displayBoxTree.append(parentDisplayBoxNodeIndex, boxes.size() - 1);
                 continue;
             }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to