ladybird/Userland/Libraries/LibWeb/Layout/ButtonBox.cpp
Sam Atkins 84e7216603 LibWeb: Move "natural size" concept into Layout::Box
Having this here instead of in ReplacedBox means we can access it when
figuring out what the "preferred aspect ratio" is.

There's some inconsistency between specs about what this is called, but
they're moving towards referring to this as "natural width/height/
aspect-ratio", so let's copy that terminology.
2023-06-09 20:37:51 +02:00

39 lines
1.1 KiB
C++

/*
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibGfx/Font/Font.h>
#include <LibWeb/DOM/Document.h>
#include <LibWeb/Layout/ButtonBox.h>
#include <LibWeb/Painting/ButtonPaintable.h>
namespace Web::Layout {
ButtonBox::ButtonBox(DOM::Document& document, HTML::HTMLInputElement& element, NonnullRefPtr<CSS::StyleProperties> style)
: FormAssociatedLabelableNode(document, element, move(style))
{
}
ButtonBox::~ButtonBox() = default;
void ButtonBox::prepare_for_replaced_layout()
{
// For <input type="submit" /> and <input type="button" />, the contents of
// the button does not appear as the contents of the element but as the
// value attribute. This is not the case with <button />, which contains
// its contents normally.
if (is<HTML::HTMLInputElement>(dom_node())) {
set_natural_width(font().width(static_cast<HTML::HTMLInputElement&>(dom_node()).value()));
set_natural_height(font().pixel_size_rounded_up());
}
}
JS::GCPtr<Painting::Paintable> ButtonBox::create_paintable() const
{
return Painting::ButtonPaintable::create(*this);
}
}