diff --git a/Userland/Libraries/LibWeb/Layout/Box.h b/Userland/Libraries/LibWeb/Layout/Box.h index a996209aaa..76eb956303 100644 --- a/Userland/Libraries/LibWeb/Layout/Box.h +++ b/Userland/Libraries/LibWeb/Layout/Box.h @@ -28,13 +28,18 @@ public: bool is_body() const; - virtual Optional intrinsic_width() const { return {}; } - virtual Optional intrinsic_height() const { return {}; } - virtual Optional intrinsic_aspect_ratio() const { return {}; } + // https://www.w3.org/TR/css-images-3/#natural-dimensions + Optional natural_width() const { return m_natural_width; } + Optional natural_height() const { return m_natural_height; } + Optional natural_aspect_ratio() const { return m_natural_aspect_ratio; } - bool has_intrinsic_width() const { return intrinsic_width().has_value(); } - bool has_intrinsic_height() const { return intrinsic_height().has_value(); } - bool has_intrinsic_aspect_ratio() const { return intrinsic_aspect_ratio().has_value(); } + bool has_natural_width() const { return natural_width().has_value(); } + bool has_natural_height() const { return natural_height().has_value(); } + bool has_natural_aspect_ratio() const { return natural_aspect_ratio().has_value(); } + + void set_natural_width(Optional width) { m_natural_width = width; } + void set_natural_height(Optional height) { m_natural_height = height; } + void set_natural_aspect_ratio(Optional ratio) { m_natural_aspect_ratio = ratio; } virtual ~Box() override; @@ -56,6 +61,10 @@ private: virtual bool is_box() const final { return true; } CSSPixelPoint m_scroll_offset; + + Optional m_natural_width; + Optional m_natural_height; + Optional m_natural_aspect_ratio; }; template<> diff --git a/Userland/Libraries/LibWeb/Layout/ButtonBox.cpp b/Userland/Libraries/LibWeb/Layout/ButtonBox.cpp index 881fd6647f..0bdf09a67f 100644 --- a/Userland/Libraries/LibWeb/Layout/ButtonBox.cpp +++ b/Userland/Libraries/LibWeb/Layout/ButtonBox.cpp @@ -25,8 +25,8 @@ void ButtonBox::prepare_for_replaced_layout() // value attribute. This is not the case with