ladybird/Libraries/LibWeb/Layout
Andreas Kling c90b79a282 LibWeb: Cache TextNode chunks between layouts
Keep one per-TextNode chunk list so repeated inline layouts can skip
segmenting text and resolving fonts for each chunk. The cache entry is
keyed by the wrapping mode, whitespace behavior, word-break value, and
font cascade used to produce it.

Store rendered text, segmenters, and chunks behind one text-dependent
cache key. This keeps cached Utf16Views and segmenter state anchored to
current text when inherited text style changes without rebuilding the
layout tree.

Keep the cached font cascade alive while chunks are cached so a later
font-list allocation cannot compare equal by reusing the same address.

Add innerText coverage for style-only text-transform and white-space
changes, since that path constructs ChunkIterator directly.
2026-05-24 23:41:57 +02:00
..
AudioBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
AudioBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
AvailableSpace.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
AvailableSpace.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
BlockContainer.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
BlockContainer.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
BlockFormattingContext.cpp LibWeb: Let IFC publish inline-end static position 2026-05-23 11:01:58 +02:00
BlockFormattingContext.h LibWeb: Position list marker to the right of right-to-left text 2026-04-30 16:20:10 +02:00
Box.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
Box.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
BreakNode.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
BreakNode.h Everywhere: Change west consts caught by clang-format-21 to east consts 2025-08-29 18:18:55 +01:00
CanvasBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
CanvasBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
CheckBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
CheckBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
DominantBaseline.h LibWeb: Implement dominant-baseline for SVG text 2026-02-26 09:23:23 +01:00
FieldSetBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
FieldSetBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
FlexFormattingContext.cpp LibWeb: Place single-line flex lines at cross-start 2026-05-17 10:15:38 +02:00
FlexFormattingContext.h LibWeb: Fix flex abspos static positions on reversed cross axes 2026-04-03 14:29:44 +02:00
FormattingContext.cpp LibWeb: Size appearance-none text inputs for max-content 2026-05-20 22:31:38 +02:00
FormattingContext.h LibWeb: Resolve table wrappers from grid areas 2026-05-19 10:41:52 +02:00
GridFormattingContext.cpp LibWeb: Preserve overflowing grid content center alignment 2026-05-20 21:09:32 +02:00
GridFormattingContext.h LibWeb: Resolve table wrappers from grid areas 2026-05-19 10:41:52 +02:00
ImageBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
ImageBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
ImageProvider.cpp LibGfx+LibWeb: Make DecodedImageFrame a value type 2026-05-07 16:08:13 +02:00
ImageProvider.h LibWeb: Stop idle animated CSS image timers 2026-05-23 11:36:53 +02:00
InlineFormattingContext.cpp LibWeb: Let IFC publish inline-end static position 2026-05-23 11:01:58 +02:00
InlineFormattingContext.h LibWeb: Let IFC publish inline-end static position 2026-05-23 11:01:58 +02:00
InlineLevelIterator.cpp LibWeb: Cache TextNode chunks between layouts 2026-05-24 23:41:57 +02:00
InlineLevelIterator.h LibWeb: Implement word-break functionality using UAX#14 line breaking 2026-02-14 16:23:18 -05:00
InlineNode.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
InlineNode.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
LayoutState.cpp LibWeb: Guard inline fragment lookups during layout commit 2026-05-23 11:36:45 +02:00
LayoutState.h LibWeb: Let IFC publish inline-end static position 2026-05-23 11:01:58 +02:00
LegendBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
LegendBox.h LibWeb: Remove Document.h include from Layout/Node.h 2026-02-08 18:51:13 +01:00
LineBox.cpp LibWeb/Layout: Use is_empty() when fragment text has nothing to trim 2026-03-31 13:48:50 +01:00
LineBox.h LibWeb: Let IFC publish inline-end static position 2026-05-23 11:01:58 +02:00
LineBoxFragment.cpp LibWeb: Store correct text offsets in PaintableFragment 2025-09-12 15:34:09 -04:00
LineBoxFragment.h LibWeb: Mark ellipsized fragments as hidden rather than removing them 2026-04-17 08:03:26 +02:00
LineBuilder.cpp LibWeb: Guard inline fragment lookups during layout commit 2026-05-23 11:36:45 +02:00
LineBuilder.h LibWeb: Preserve inline-flex strut descent 2026-05-23 11:01:58 +02:00
ListItemBox.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
ListItemBox.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
ListItemMarkerBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
ListItemMarkerBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
NavigableContainerViewport.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
NavigableContainerViewport.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
Node.cpp LibWeb: Stop idle animated CSS image timers 2026-05-23 11:36:53 +02:00
Node.h LibWeb: Stop idle animated CSS image timers 2026-05-23 11:36:53 +02:00
RadioButton.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
RadioButton.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
ReplacedBox.cpp LibWeb: Allow Layout::ImageBox to be anonymous 2025-07-28 22:46:27 +02:00
ReplacedBox.h LibWeb/Layout: Don't inject natural size in prepare_for_replaced_layout 2026-02-02 14:36:49 +00:00
ReplacedWithChildrenFormattingContext.cpp LibWeb: Allow replaced elements to host children 2026-02-23 07:27:31 +01:00
ReplacedWithChildrenFormattingContext.h LibWeb: Allow replaced elements to host children 2026-02-23 07:27:31 +01:00
SVGBox.cpp LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
SVGBox.h LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
SVGClipBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGClipBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGForeignObjectBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGForeignObjectBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGFormattingContext.cpp LibWeb: Move standalone SVG document layout handling out of BFC 2026-03-31 10:49:15 +02:00
SVGFormattingContext.h LibWeb: Compute SVG mask/clip transforms using layout tree hierarchy 2026-02-05 09:00:56 +01:00
SVGGeometryBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGGeometryBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGGraphicsBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGGraphicsBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGImageBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGImageBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGMaskBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGMaskBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGPatternBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGPatternBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGSVGBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGSVGBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGTextBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGTextBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGTextPathBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
SVGTextPathBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
TableFormattingContext.cpp LibWeb: Resolve table width constraints as content widths 2026-05-19 10:41:52 +02:00
TableFormattingContext.h LibWeb: Restrict throwaway layout states to their subtree 2026-02-27 19:11:41 +01:00
TableGrid.cpp LibWeb: Walk layout tree for table column groups 2026-05-23 11:36:45 +02:00
TableGrid.h LibWeb: Avoid having the same code in two files 2025-12-24 14:10:27 +01:00
TableWrapper.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
TableWrapper.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
TextAreaBox.cpp LibWeb: Implement auto_content_box_size for textarea and input 2026-02-02 14:36:49 +00:00
TextAreaBox.h LibWeb: Implement auto_content_box_size for textarea and input 2026-02-02 14:36:49 +00:00
TextInputBox.cpp LibWeb: Size appearance-none text inputs for max-content 2026-05-20 22:31:38 +02:00
TextInputBox.h LibWeb: Size appearance-none text inputs for max-content 2026-05-20 22:31:38 +02:00
TextNode.cpp LibWeb: Cache TextNode chunks between layouts 2026-05-24 23:41:57 +02:00
TextNode.h LibWeb: Cache TextNode chunks between layouts 2026-05-24 23:41:57 +02:00
TextOffsetMapping.cpp LibWeb: Apply ::first-letter pseudo-element styles 2026-05-20 12:09:19 +01:00
TextOffsetMapping.h LibWeb: Apply ::first-letter pseudo-element styles 2026-05-20 12:09:19 +01:00
TreeBuilder.cpp LibWeb: Stop idle animated CSS image timers 2026-05-23 11:36:53 +02:00
TreeBuilder.h LibWeb: Apply ::first-letter pseudo-element styles 2026-05-20 12:09:19 +01:00
VideoBox.cpp LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
VideoBox.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00
Viewport.cpp LibWeb: Apply ::first-letter pseudo-element styles 2026-05-20 12:09:19 +01:00
Viewport.h LibWeb: Apply ::first-letter pseudo-element styles 2026-05-20 12:09:19 +01:00