Title: [294233] trunk/Source/WebCore
Revision
294233
Author
za...@apple.com
Date
2022-05-16 08:08:11 -0700 (Mon, 16 May 2022)

Log Message

[LFC][FFC] Add "flex-direction: row-reverse" basic visual/logical conversion
https://bugs.webkit.org/show_bug.cgi?id=240432

Reviewed by Antti Koivisto.

With "flex-direction: row-reverse" the main axis progression is from visual right to left (with default writing mode and all that).

* layout/formattingContexts/flex/FlexFormattingContext.cpp:
(WebCore::Layout::FlexFormattingContext::layoutInFlowContentForIntegration):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (294232 => 294233)


--- trunk/Source/WebCore/ChangeLog	2022-05-16 13:55:35 UTC (rev 294232)
+++ trunk/Source/WebCore/ChangeLog	2022-05-16 15:08:11 UTC (rev 294233)
@@ -1,5 +1,17 @@
 2022-05-16  Alan Bujtas  <za...@apple.com>
 
+        [LFC][FFC] Add "flex-direction: row-reverse" basic visual/logical conversion
+        https://bugs.webkit.org/show_bug.cgi?id=240432
+
+        Reviewed by Antti Koivisto.
+
+        With "flex-direction: row-reverse" the main axis progression is from visual right to left (with default writing mode and all that).
+
+        * layout/formattingContexts/flex/FlexFormattingContext.cpp:
+        (WebCore::Layout::FlexFormattingContext::layoutInFlowContentForIntegration):
+
+2022-05-16  Alan Bujtas  <za...@apple.com>
+
         [LFC][FFC] Add "flex-direction: column" basic visual/logical conversion
         https://bugs.webkit.org/show_bug.cgi?id=240430
 

Modified: trunk/Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp (294232 => 294233)


--- trunk/Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp	2022-05-16 13:55:35 UTC (rev 294232)
+++ trunk/Source/WebCore/layout/formattingContexts/flex/FlexFormattingContext.cpp	2022-05-16 15:08:11 UTC (rev 294233)
@@ -129,16 +129,11 @@
     auto& formattingState = this->formattingState();
     Vector<FlexItemLogicalBox> logicalFlexItemList;
 
-    auto logicalLeft = LayoutUnit { };
-    auto logicalTop = LayoutUnit { };
 
     auto convertVisualToLogical = [&] {
         // FIXME: Convert visual (row/column) direction to logical.
         auto direction = root().style().flexDirection();
 
-        logicalLeft = constraints.horizontal().logicalLeft;
-        logicalTop = constraints.logicalTop();
-
         for (auto& flexItem : childrenOfType<ContainerBox>(root())) {
             auto& flexItemGeometry = formattingState.boxGeometry(flexItem);
             auto logicalSize = LayoutSize { };
@@ -145,12 +140,12 @@
 
             switch (direction) {
             case FlexDirection::Row:
+            case FlexDirection::RowReverse:
                 logicalSize = { flexItemGeometry.marginBoxWidth(), flexItemGeometry.marginBoxHeight() };
                 break;
             case FlexDirection::Column:
                 logicalSize = { flexItemGeometry.marginBoxHeight(), flexItemGeometry.marginBoxWidth() };
                 break;
-            case FlexDirection::RowReverse:
             case FlexDirection::ColumnReverse:
                 ASSERT_NOT_IMPLEMENTED_YET();
                 break;
@@ -163,6 +158,9 @@
     };
     convertVisualToLogical();
 
+    auto logicalLeft = LayoutUnit { };
+    auto logicalTop = LayoutUnit { };
+
     for (auto& logicalFlexItem : logicalFlexItemList) {
         logicalFlexItem.rect.setTopLeft({ logicalLeft, logicalTop });
         logicalLeft = logicalFlexItem.rect.right();
@@ -177,12 +175,16 @@
 
             switch (direction) {
             case FlexDirection::Row:
-                topLeft = logicalFlexItem.rect.topLeft();
+                topLeft = { constraints.horizontal().logicalLeft + logicalFlexItem.rect.left(), constraints.logicalTop() + logicalFlexItem.rect.top() };
                 break;
-            case FlexDirection::Column:
-                topLeft = logicalFlexItem.rect.topLeft().transposedPoint();
+            case FlexDirection::RowReverse:
+                topLeft = { constraints.horizontal().logicalRight() - logicalFlexItem.rect.right(), constraints.logicalTop() + logicalFlexItem.rect.top() };
                 break;
-            case FlexDirection::RowReverse:
+            case FlexDirection::Column: {
+                auto flippedTopLeft = logicalFlexItem.rect.topLeft().transposedPoint();
+                topLeft = { constraints.horizontal().logicalLeft + flippedTopLeft.x(), constraints.logicalTop() + flippedTopLeft.y() };
+                break;
+            }
             case FlexDirection::ColumnReverse:
                 ASSERT_NOT_IMPLEMENTED_YET();
                 break;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to