summaryrefslogtreecommitdiff
path: root/Userland
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-10-28 19:17:23 +0200
committerAndreas Kling <kling@serenityos.org>2021-10-28 19:20:40 +0200
commit37f0bd0a42e1090cc61b1a7a480eb0c1ca376dec (patch)
tree87e9255b3e4a13f710baff0b9cdc641d5574845e /Userland
parent76fa57713d7db38736c636f571d9d4a0c82b7e3d (diff)
downloadserenity-37f0bd0a42e1090cc61b1a7a480eb0c1ca376dec.zip
LibWeb: Small fix to height computation for block-with-inline-children
We now compute the used height of height:auto by measuring from the top content edge (y=0) to the bottom of the bottommost line box within the block container. This fixes an issue where we'd fail to account for the topmost line box being taller than any of its fragments (which can happen if the line-height is greater than the height of all fragments on the line.)
Diffstat (limited to 'Userland')
-rw-r--r--Userland/Libraries/LibWeb/Layout/FormattingContext.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp
index fc5f8ce096..871d85abbc 100644
--- a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp
+++ b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp
@@ -194,13 +194,10 @@ float FormattingContext::compute_auto_height_for_block_level_element(Box const&
if (box.children_are_inline()) {
// If it only has inline-level children, the height is the distance between
- // the top of the topmost line box and the bottom of the bottommost line box.
+ // the top content edge and the bottom of the bottommost line box.
auto& block_container = verify_cast<BlockContainer>(box);
+ top = 0;
if (!block_container.line_boxes().is_empty()) {
- for (auto& fragment : block_container.line_boxes().first().fragments()) {
- if (!top.has_value() || fragment.offset().y() < top.value())
- top = fragment.offset().y();
- }
for (auto& fragment : block_container.line_boxes().last().fragments()) {
if (!bottom.has_value() || (fragment.offset().y() + fragment.height()) > bottom.value())
bottom = fragment.offset().y() + fragment.height();