1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 20:57:35 +00:00

LibWeb: Honor align-self over align-items when non-auto on flex item

This commit is contained in:
Andreas Kling 2022-07-11 23:52:36 +02:00
parent 3b3af58cf6
commit 2f0657739b
9 changed files with 84 additions and 10 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2020-2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -38,6 +38,7 @@ public:
static CSS::ImageRendering image_rendering() { return CSS::ImageRendering::Auto; }
static CSS::JustifyContent justify_content() { return CSS::JustifyContent::FlexStart; }
static CSS::AlignItems align_items() { return CSS::AlignItems::Stretch; }
static CSS::AlignSelf align_self() { return CSS::AlignSelf::Auto; }
static CSS::Overflow overflow() { return CSS::Overflow::Visible; }
static CSS::BoxSizing box_sizing() { return CSS::BoxSizing::ContentBox; }
static CSS::PointerEvents pointer_events() { return CSS::PointerEvents::Auto; }
@ -150,6 +151,7 @@ public:
float flex_shrink() const { return m_noninherited.flex_shrink; }
int order() const { return m_noninherited.order; }
CSS::AlignItems align_items() const { return m_noninherited.align_items; }
CSS::AlignSelf align_self() const { return m_noninherited.align_self; }
float opacity() const { return m_noninherited.opacity; }
CSS::Visibility visibility() const { return m_inherited.visibility; }
CSS::ImageRendering image_rendering() const { return m_inherited.image_rendering; }
@ -264,6 +266,7 @@ protected:
float flex_shrink { InitialValues::flex_shrink() };
int order { InitialValues::order() };
CSS::AlignItems align_items { InitialValues::align_items() };
CSS::AlignSelf align_self { InitialValues::align_self() };
CSS::JustifyContent justify_content { InitialValues::justify_content() };
CSS::Overflow overflow_x { InitialValues::overflow() };
CSS::Overflow overflow_y { InitialValues::overflow() };
@ -333,6 +336,7 @@ public:
void set_flex_shrink(float value) { m_noninherited.flex_shrink = value; }
void set_order(int value) { m_noninherited.order = value; }
void set_align_items(CSS::AlignItems value) { m_noninherited.align_items = value; }
void set_align_self(CSS::AlignSelf value) { m_noninherited.align_self = value; }
void set_opacity(float value) { m_noninherited.opacity = value; }
void set_justify_content(CSS::JustifyContent value) { m_noninherited.justify_content = value; }
void set_box_shadow(Vector<ShadowData>&& value) { m_noninherited.box_shadow = move(value); }

View file

@ -1,10 +1,28 @@
{
"align-items": [
"flex-start",
"flex-end",
"center",
"baseline",
"stretch"
"center",
"flex-end",
"flex-start",
"normal",
"safe",
"self-end",
"self-start",
"stretch",
"unsafe"
],
"align-self": [
"auto",
"baseline",
"center",
"flex-end",
"flex-start",
"normal",
"safe",
"self-end",
"self-start",
"stretch",
"unsafe"
],
"background-attachment": [
"fixed",

View file

@ -181,8 +181,8 @@
"nwse-resize",
"oblique",
"opaque",
"optimizespeed",
"optimizequality",
"optimizespeed",
"outset",
"outside",
"overline",
@ -217,9 +217,12 @@
"ruby-text-container",
"run-in",
"s-resize",
"safe",
"sans-serif",
"scroll",
"se-resize",
"self-end",
"self-start",
"separate",
"serif",
"slow",
@ -262,6 +265,7 @@
"ui-sans-serif",
"ui-serif",
"underline",
"unsafe",
"upper-alpha",
"upper-latin",
"upper-roman",

View file

@ -6,6 +6,13 @@
"align-items"
]
},
"align-self": {
"inherited": false,
"initial": "auto",
"valid-types": [
"align-self"
]
},
"background": {
"affects-layout": false,
"inherited": false,

View file

@ -310,6 +310,12 @@ Optional<CSS::AlignItems> StyleProperties::align_items() const
return value_id_to_align_items(value->to_identifier());
}
Optional<CSS::AlignSelf> StyleProperties::align_self() const
{
auto value = property(CSS::PropertyID::AlignSelf);
return value_id_to_align_self(value->to_identifier());
}
Optional<CSS::Position> StyleProperties::position() const
{
auto value = property(CSS::PropertyID::Position);

View file

@ -67,6 +67,7 @@ public:
float flex_shrink() const;
int order() const;
Optional<CSS::AlignItems> align_items() const;
Optional<CSS::AlignSelf> align_self() const;
float opacity() const;
Optional<CSS::Visibility> visibility() const;
Optional<CSS::ImageRendering> image_rendering() const;