mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-13 03:29:49 +00:00
LibWeb: Add layout objects for fieldset and legend
Add the boilerplate code for the layout objects that represent the `<fieldset>` and `<legend>` elements. Using these, we can make progress towards laying out these two elements per the spec at https://html.spec.whatwg.org/multipage/rendering.html#the-fieldset-and-legend-elements.
This commit is contained in:
parent
b342758dbf
commit
a820308a02
Notes:
github-actions[bot]
2024-11-19 13:32:03 +00:00
Author: https://github.com/kostyafarber
Commit: a820308a02
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2127
Reviewed-by: https://github.com/kalenikaliaksandr
12 changed files with 173 additions and 0 deletions
|
@ -14,6 +14,7 @@
|
|||
#include <LibWeb/HTML/HTMLOutputElement.h>
|
||||
#include <LibWeb/HTML/HTMLSelectElement.h>
|
||||
#include <LibWeb/HTML/HTMLTextAreaElement.h>
|
||||
#include <LibWeb/Layout/FieldSetBox.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
|
@ -77,4 +78,14 @@ GC::Ptr<DOM::HTMLCollection> const& HTMLFieldSetElement::elements()
|
|||
return m_elements;
|
||||
}
|
||||
|
||||
Layout::FieldSetBox* HTMLFieldSetElement::layout_node()
|
||||
{
|
||||
return static_cast<Layout::FieldSetBox*>(Node::layout_node());
|
||||
}
|
||||
|
||||
JS::GCPtr<Layout::Node> HTMLFieldSetElement::create_layout_node(CSS::StyleProperties style)
|
||||
{
|
||||
return heap().allocate<Layout::FieldSetBox>(document(), *this, style);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -42,6 +42,10 @@ public:
|
|||
|
||||
virtual Optional<ARIA::Role> default_role() const override { return ARIA::Role::group; }
|
||||
|
||||
virtual JS::GCPtr<Layout::Node> create_layout_node(CSS::StyleProperties) override;
|
||||
Layout::FieldSetBox* layout_node();
|
||||
Layout::FieldSetBox const* layout_node() const;
|
||||
|
||||
private:
|
||||
HTMLFieldSetElement(DOM::Document&, DOM::QualifiedName);
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <LibWeb/Bindings/Intrinsics.h>
|
||||
#include <LibWeb/HTML/HTMLFieldSetElement.h>
|
||||
#include <LibWeb/HTML/HTMLLegendElement.h>
|
||||
#include <LibWeb/Layout/LegendBox.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
|
@ -39,4 +40,19 @@ HTMLFormElement* HTMLLegendElement::form()
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
JS::GCPtr<Layout::Node> HTMLLegendElement::create_layout_node(CSS::StyleProperties style)
|
||||
{
|
||||
return heap().allocate<Layout::LegendBox>(document(), *this, move(style));
|
||||
}
|
||||
|
||||
Layout::LegendBox* HTMLLegendElement::layout_node()
|
||||
{
|
||||
return static_cast<Layout::LegendBox*>(Node::layout_node());
|
||||
}
|
||||
|
||||
Layout::LegendBox const* HTMLLegendElement::layout_node() const
|
||||
{
|
||||
return static_cast<Layout::LegendBox const*>(Node::layout_node());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <LibWeb/HTML/HTMLElement.h>
|
||||
#include <LibWeb/Layout/LegendBox.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
|
@ -19,6 +20,10 @@ public:
|
|||
|
||||
HTMLFormElement* form();
|
||||
|
||||
virtual JS::GCPtr<Layout::Node> create_layout_node(CSS::StyleProperties) override;
|
||||
Layout::LegendBox* layout_node();
|
||||
Layout::LegendBox const* layout_node() const;
|
||||
|
||||
private:
|
||||
HTMLLegendElement(DOM::Document&, DOM::QualifiedName);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue