From e75eb21a54d41a1f77abe6f7ca0f158eca987baa Mon Sep 17 00:00:00 2001 From: implicitfield <114500360+implicitfield@users.noreply.github.com> Date: Tue, 20 Dec 2022 21:16:29 +0200 Subject: [PATCH] LibWeb: Support "start" and "end" values for justify-content --- Userland/Libraries/LibWeb/CSS/Enums.json | 2 ++ Userland/Libraries/LibWeb/CSS/Identifiers.json | 2 ++ .../LibWeb/Layout/FlexFormattingContext.cpp | 16 ++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/Userland/Libraries/LibWeb/CSS/Enums.json b/Userland/Libraries/LibWeb/CSS/Enums.json index 9c306150b9..34cdc7fb46 100644 --- a/Userland/Libraries/LibWeb/CSS/Enums.json +++ b/Userland/Libraries/LibWeb/CSS/Enums.json @@ -142,6 +142,8 @@ "optimizequality=smooth" ], "justify-content": [ + "start", + "end", "flex-start", "flex-end", "center", diff --git a/Userland/Libraries/LibWeb/CSS/Identifiers.json b/Userland/Libraries/LibWeb/CSS/Identifiers.json index 24c25a7f94..a4b4628b62 100644 --- a/Userland/Libraries/LibWeb/CSS/Identifiers.json +++ b/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", diff --git a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp index c730e67b69..1d7b6aaa9f 100644 --- a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp +++ b/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;