summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2022-09-16 14:21:52 +0200
committerAndreas Kling <kling@serenityos.org>2022-09-16 15:15:50 +0200
commit412b2313f33f5efe7f672fed7c26c8fa0187c188 (patch)
tree4dbbe7a51d94e0ac545283ea3ab6375be1a8d682 /Userland/Libraries/LibJS
parent54e735924301fd96d54b64c8aa769b813891b1f9 (diff)
downloadserenity-412b2313f33f5efe7f672fed7c26c8fa0187c188.zip
LibWeb: Improve inline flow around floating boxes
This patch combines a number of techniques to make inline content flow more correctly around floats: - During inline layout, BFC now lets LineBuilder decide the Y coordinate when inserting a new float. LineBuilder has more information about the currently accumulated line, and can make better breaking decisions. - When inserting a float on one side, and the top of the newly inserted float is below the bottommost float on the opposite side, we now reset the opposite side back to the start of that edge. This improves breaking behavior between opposite-side floats. - After inserting a float during inline layout, we now recalculate the available space on the line, but don't adjust X offsets of already existing fragments. This is handled by update_last_line() anyway, so it was pointless busywork. - When measuring whether a line can fit at a given Y coordinate, we now consider both the top and bottom Y values of the line. This fixes an issue where the bottom part of a line would bleed over other content (since we had only checked that the top Y coordinate of that line would fit.) There are some pretty brain-dead algorithms in here that we need to make smarter, but I didn't want to complicate this any further so I've left FIXMEs about them instead.
Diffstat (limited to 'Userland/Libraries/LibJS')
0 files changed, 0 insertions, 0 deletions