mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 17:57:35 +00:00
LibWeb: Support cellpadding
attribute on table
elements
This commit is contained in:
parent
3d1fbcb26b
commit
00c1da8cbc
5 changed files with 75 additions and 0 deletions
|
@ -85,7 +85,16 @@ void HTMLTableCellElement::apply_presentational_hints(CSS::StyleProperties& styl
|
|||
}
|
||||
});
|
||||
auto const& table_element = table_containing_cell(*this);
|
||||
|
||||
if (auto padding = table_element.padding()) {
|
||||
style.set_property(CSS::PropertyID::PaddingTop, CSS::LengthStyleValue::create(CSS::Length::make_px(padding)));
|
||||
style.set_property(CSS::PropertyID::PaddingBottom, CSS::LengthStyleValue::create(CSS::Length::make_px(padding)));
|
||||
style.set_property(CSS::PropertyID::PaddingLeft, CSS::LengthStyleValue::create(CSS::Length::make_px(padding)));
|
||||
style.set_property(CSS::PropertyID::PaddingRight, CSS::LengthStyleValue::create(CSS::Length::make_px(padding)));
|
||||
}
|
||||
|
||||
auto border = table_element.border();
|
||||
|
||||
if (!border)
|
||||
return;
|
||||
auto apply_border_style = [&](CSS::PropertyID style_property, CSS::PropertyID width_property, CSS::PropertyID color_property) {
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <LibWeb/HTML/HTMLTableColElement.h>
|
||||
#include <LibWeb/HTML/HTMLTableElement.h>
|
||||
#include <LibWeb/HTML/HTMLTableRowElement.h>
|
||||
#include <LibWeb/HTML/Numbers.h>
|
||||
#include <LibWeb/HTML/Parser/HTMLParser.h>
|
||||
#include <LibWeb/Namespace.h>
|
||||
|
||||
|
@ -100,6 +101,19 @@ void HTMLTableElement::apply_presentational_hints(CSS::StyleProperties& style) c
|
|||
});
|
||||
}
|
||||
|
||||
void HTMLTableElement::attribute_changed(FlyString const& name, Optional<String> const& value)
|
||||
{
|
||||
Base::attribute_changed(name, value);
|
||||
if (name == HTML::AttributeNames::cellpadding) {
|
||||
if (value.has_value())
|
||||
m_padding = max(0, parse_integer(value.value()).value_or(0));
|
||||
else
|
||||
m_padding = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/tables.html#dom-table-caption
|
||||
JS::GCPtr<HTMLTableCaptionElement> HTMLTableElement::caption()
|
||||
{
|
||||
|
@ -424,4 +438,9 @@ unsigned int HTMLTableElement::border() const
|
|||
return parse_border(deprecated_attribute(HTML::AttributeNames::border));
|
||||
}
|
||||
|
||||
unsigned int HTMLTableElement::padding() const
|
||||
{
|
||||
return m_padding;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@ public:
|
|||
virtual Optional<ARIA::Role> default_role() const override { return ARIA::Role::table; }
|
||||
|
||||
unsigned border() const;
|
||||
unsigned padding() const;
|
||||
|
||||
private:
|
||||
HTMLTableElement(DOM::Document&, DOM::QualifiedName);
|
||||
|
@ -57,9 +58,11 @@ private:
|
|||
virtual void visit_edges(Cell::Visitor&) override;
|
||||
|
||||
virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
|
||||
virtual void attribute_changed(FlyString const& name, Optional<String> const& value) override;
|
||||
|
||||
JS::GCPtr<DOM::HTMLCollection> mutable m_rows;
|
||||
JS::GCPtr<DOM::HTMLCollection> mutable m_t_bodies;
|
||||
unsigned m_padding { 1 };
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue