mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-05 18:52:56 +00:00
Handle available space more carefully when computing a table width, in order to avoid creating a definite infinite width when available space width is max-content, as it's the case in calculate_max_content_width. The constraint is thus correctly propagated by the time we cache the computed value, which was previously rejected by the hash function due to being definite but infinite instead of max-content.
59 lines
1.3 KiB
C++
59 lines
1.3 KiB
C++
/*
|
|
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibWeb/Layout/AvailableSpace.h>
|
|
#include <math.h>
|
|
|
|
namespace Web::Layout {
|
|
|
|
AvailableSize AvailableSize::make_definite(CSSPixels value)
|
|
{
|
|
VERIFY(isfinite(value.value()));
|
|
return AvailableSize { Type::Definite, value };
|
|
}
|
|
|
|
AvailableSize AvailableSize::make_indefinite()
|
|
{
|
|
return AvailableSize { Type::Indefinite, INFINITY };
|
|
}
|
|
|
|
AvailableSize AvailableSize::make_min_content()
|
|
{
|
|
return AvailableSize { Type::MinContent, 0 };
|
|
}
|
|
|
|
AvailableSize AvailableSize::make_max_content()
|
|
{
|
|
return AvailableSize { Type::MaxContent, INFINITY };
|
|
}
|
|
|
|
DeprecatedString AvailableSize::to_deprecated_string() const
|
|
{
|
|
switch (m_type) {
|
|
case Type::Definite:
|
|
return DeprecatedString::formatted("definite({})", m_value);
|
|
case Type::Indefinite:
|
|
return "indefinite";
|
|
case Type::MinContent:
|
|
return "min-content";
|
|
case Type::MaxContent:
|
|
return "max-content";
|
|
}
|
|
VERIFY_NOT_REACHED();
|
|
}
|
|
|
|
DeprecatedString AvailableSpace::to_deprecated_string() const
|
|
{
|
|
return DeprecatedString::formatted("{} x {}", width, height);
|
|
}
|
|
|
|
AvailableSize::AvailableSize(Type type, CSSPixels value)
|
|
: m_type(type)
|
|
, m_value(value)
|
|
{
|
|
}
|
|
|
|
}
|