Explorar el Código

LibWeb: Support "start" and "end" values for justify-content

implicitfield hace 2 años
padre
commit
e75eb21a54

+ 2 - 0
Userland/Libraries/LibWeb/CSS/Enums.json

@@ -142,6 +142,8 @@
         "optimizequality=smooth"
     ],
     "justify-content": [
+        "start",
+        "end",
         "flex-start",
         "flex-end",
         "center",

+ 2 - 0
Userland/Libraries/LibWeb/CSS/Identifiers.json

@@ -109,6 +109,7 @@
   "double",
   "e-resize",
   "enabled",
+  "end",
   "ew-resize",
   "fantasy",
   "fast",
@@ -249,6 +250,7 @@
   "srgb",
   "standalone",
   "standard",
+  "start",
   "static",
   "sticky",
   "stretch",

+ 16 - 0
Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp

@@ -1231,6 +1231,7 @@ void FlexFormattingContext::distribute_any_remaining_free_space()
         bool justification_is_centered = false;
 
         switch (flex_container().computed_values().justify_content()) {
+        case CSS::JustifyContent::Start:
         case CSS::JustifyContent::FlexStart:
             if (is_direction_reverse()) {
                 flex_region_render_cursor = FlexRegionRenderCursor::Right;
@@ -1239,6 +1240,7 @@ void FlexFormattingContext::distribute_any_remaining_free_space()
                 initial_offset = 0;
             }
             break;
+        case CSS::JustifyContent::End:
         case CSS::JustifyContent::FlexEnd:
             if (is_direction_reverse()) {
                 initial_offset = 0;
@@ -2002,6 +2004,20 @@ Gfx::FloatPoint FlexFormattingContext::calculate_static_position(Box const& box)
     bool pack_from_end = true;
     float main_offset = 0;
     switch (flex_container().computed_values().justify_content()) {
+    case CSS::JustifyContent::Start:
+        if (is_direction_reverse()) {
+            main_offset = specified_main_size(flex_container());
+        } else {
+            main_offset = 0;
+        }
+        break;
+    case CSS::JustifyContent::End:
+        if (is_direction_reverse()) {
+            main_offset = 0;
+        } else {
+            main_offset = specified_main_size(flex_container());
+        }
+        break;
     case CSS::JustifyContent::FlexStart:
         if (is_direction_reverse()) {
             pack_from_end = false;