LibWeb: Implement the unreachable scrollable overflow

Whenever we end up with a scrollable overflow rect that goes beyond
either of its axes (i.e. the rect has a negative X or Y position
relative to its parent's absolute padding box position), we need to clip
that rect to prevent going into the "unreachable scrollable overflow".

This fixes the horizontal scrolling on https://ladybird.org (gets more
pronounced if you make the window very narrow).
This commit is contained in:
Jelle Raaijmakers 2025-07-10 11:43:46 +02:00
parent 05ddf5c718
commit 2998049fe9
Notes: github-actions[bot] 2025-07-11 06:24:49 +00:00
33 changed files with 140 additions and 98 deletions

View file

@ -1917,9 +1917,9 @@ int Element::scroll_width()
return 0; return 0;
// 7. Return the width of the elements scrolling area. // 7. Return the width of the elements scrolling area.
if (auto scrollable_overflow_rect = paintable_box()->scrollable_overflow_rect(); scrollable_overflow_rect.has_value()) { if (auto scrollable_overflow_rect = paintable_box()->scrollable_overflow_rect(); scrollable_overflow_rect.has_value())
return scrollable_overflow_rect->width().to_int(); return scrollable_overflow_rect->width().to_int();
}
return 0; return 0;
} }

View file

@ -50,7 +50,7 @@ LayoutState::UsedValues const& LayoutState::get(NodeWithStyle const& node) const
return *new_used_values_ptr; return *new_used_values_ptr;
} }
// https://www.w3.org/TR/css-overflow-3/#scrollable-overflow // https://drafts.csswg.org/css-overflow-3/#scrollable-overflow-region
static CSSPixelRect measure_scrollable_overflow(Box const& box) static CSSPixelRect measure_scrollable_overflow(Box const& box)
{ {
if (!box.paintable_box()) if (!box.paintable_box())
@ -64,7 +64,8 @@ static CSSPixelRect measure_scrollable_overflow(Box const& box)
// The scrollable overflow area is the union of: // The scrollable overflow area is the union of:
// - The scroll containers own padding box. // - The scroll containers own padding box.
auto scrollable_overflow_rect = paintable_box.absolute_padding_box_rect(); auto const paintable_absolute_padding_box = paintable_box.absolute_padding_box_rect();
auto scrollable_overflow_rect = paintable_absolute_padding_box;
// - All line boxes directly contained by the scroll container. // - All line boxes directly contained by the scroll container.
if (is<Painting::PaintableWithLines>(box.first_paintable())) { if (is<Painting::PaintableWithLines>(box.first_paintable())) {
@ -74,8 +75,8 @@ static CSSPixelRect measure_scrollable_overflow(Box const& box)
auto content_overflow_rect = scrollable_overflow_rect; auto content_overflow_rect = scrollable_overflow_rect;
// - The border boxes of all boxes for which it is the containing block // - The border boxes of all boxes for which it is the containing block and whose border boxes are positioned not
// and whose border boxes are positioned not wholly in the negative scrollable overflow region, // wholly in the negative scrollable overflow region,
// FIXME: accounting for transforms by projecting each box onto the plane of the element that establishes its 3D rendering context. [CSS3-TRANSFORMS] // FIXME: accounting for transforms by projecting each box onto the plane of the element that establishes its 3D rendering context. [CSS3-TRANSFORMS]
box.for_each_in_subtree_of_type<Box>([&box, &scrollable_overflow_rect, &content_overflow_rect](Box const& child) { box.for_each_in_subtree_of_type<Box>([&box, &scrollable_overflow_rect, &content_overflow_rect](Box const& child) {
if (!child.paintable_box()) if (!child.paintable_box())
@ -104,10 +105,10 @@ static CSSPixelRect measure_scrollable_overflow(Box const& box)
scrollable_overflow_rect.unite(child_border_box); scrollable_overflow_rect.unite(child_border_box);
content_overflow_rect.unite(child_border_box); content_overflow_rect.unite(child_border_box);
// - The scrollable overflow areas of all of the above boxes // - The scrollable overflow areas of all of the above boxes (including zero-area boxes and accounting for
// (including zero-area boxes and accounting for transforms as described above), // transforms as described above), provided they themselves have overflow: visible (i.e. do not themselves
// provided they themselves have overflow: visible (i.e. do not themselves trap the overflow) // trap the overflow) and that scrollable overflow is not already clipped (e.g. by the clip property or the
// and that scrollable overflow is not already clipped (e.g. by the clip property or the contain property). // contain property).
if (child.computed_values().overflow_x() == CSS::Overflow::Visible || child.computed_values().overflow_y() == CSS::Overflow::Visible) { if (child.computed_values().overflow_x() == CSS::Overflow::Visible || child.computed_values().overflow_y() == CSS::Overflow::Visible) {
auto child_scrollable_overflow = measure_scrollable_overflow(child); auto child_scrollable_overflow = measure_scrollable_overflow(child);
if (child.computed_values().overflow_x() == CSS::Overflow::Visible) if (child.computed_values().overflow_x() == CSS::Overflow::Visible)
@ -121,13 +122,35 @@ static CSSPixelRect measure_scrollable_overflow(Box const& box)
// FIXME: - The margin areas of grid item and flex item boxes for which the box establishes a containing block. // FIXME: - The margin areas of grid item and flex item boxes for which the box establishes a containing block.
// - Additional padding added to the end-side of the scrollable overflow rectangle as necessary // - Additional padding added to the scrollable overflow rectangle as necessary to enable scroll positions that
// to enable a scroll position that satisfies the requirements of place-content: end alignment. // satisfy the requirements of both place-content: start and place-content: end alignment.
auto has_scrollable_overflow = !paintable_box.absolute_padding_box_rect().contains(scrollable_overflow_rect); auto has_scrollable_overflow = !paintable_absolute_padding_box.contains(scrollable_overflow_rect);
if (has_scrollable_overflow) { if (has_scrollable_overflow) {
scrollable_overflow_rect.set_height(max(scrollable_overflow_rect.height(), content_overflow_rect.height() + paintable_box.box_model().padding.bottom)); scrollable_overflow_rect.set_height(max(scrollable_overflow_rect.height(), content_overflow_rect.height() + paintable_box.box_model().padding.bottom));
} }
// Additionally, due to Web-compatibility constraints (caused by authors exploiting legacy bugs to surreptitiously
// hide content from visual readers but not search engines and/or speech output), UAs must clip any content in the
// unreachable scrollable overflow region.
//
// https://drafts.csswg.org/css-overflow-3/#unreachable-scrollable-overflow-region
// Unless otherwise adjusted (e.g. by content alignment [css-align-3]), the area beyond the scroll origin in either
// axis is considered the unreachable scrollable overflow region: content rendered here is not accessible to the
// reader, see § 2.2 Scrollable Overflow.
// FIXME: The scroll origin and overflow directions are determined by ( block-start, inline-start ) or ( main-start,
// cross-start) for flex containers. Currently we assume the top-left of the absolute padding box.
if (scrollable_overflow_rect.x() < paintable_absolute_padding_box.x() || scrollable_overflow_rect.y() < paintable_absolute_padding_box.y()) {
scrollable_overflow_rect.set_size({
max(scrollable_overflow_rect.width() + min(scrollable_overflow_rect.x() - paintable_absolute_padding_box.x(), 0), 0),
max(scrollable_overflow_rect.height() + min(scrollable_overflow_rect.y() - paintable_absolute_padding_box.y(), 0), 0),
});
scrollable_overflow_rect.set_location({
max(scrollable_overflow_rect.x(), paintable_absolute_padding_box.x()),
max(scrollable_overflow_rect.y(), paintable_absolute_padding_box.y()),
});
has_scrollable_overflow = !paintable_absolute_padding_box.contains(scrollable_overflow_rect);
}
paintable_box.set_overflow_data(Painting::PaintableBox::OverflowData { paintable_box.set_overflow_data(Painting::PaintableBox::OverflowData {
.scrollable_overflow_rect = scrollable_overflow_rect, .scrollable_overflow_rect = scrollable_overflow_rect,
.has_scrollable_overflow = has_scrollable_overflow, .has_scrollable_overflow = has_scrollable_overflow,

View file

@ -10,7 +10,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x58] PaintableWithLines (BlockContainer<HTML>) [0,0 800x58]
PaintableWithLines (BlockContainer<BODY>) [109,9 302x40] overflow: [60,10 350x38] PaintableWithLines (BlockContainer<BODY>) [109,9 302x40]
PaintableWithLines (BlockContainer<DIV>) [60,10 202x38] PaintableWithLines (BlockContainer<DIV>) [60,10 202x38]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)

View file

@ -8,7 +8,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x48] PaintableWithLines (BlockContainer<HTML>) [0,0 800x48]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0] overflow: [8,-2 100x50] PaintableWithLines (BlockContainer<BODY>) [8,8 784x0] overflow: [8,8 100x40]
PaintableWithLines (BlockContainer<DIV>.r) [8,-2 50x50] PaintableWithLines (BlockContainer<DIV>.r) [8,-2 50x50]
PaintableWithLines (BlockContainer<DIV>.g) [58,-2 50x50] PaintableWithLines (BlockContainer<DIV>.g) [58,-2 50x50]

View file

@ -15,7 +15,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x216] PaintableWithLines (BlockContainer<HTML>) [0,0 800x216]
PaintableWithLines (BlockContainer<BODY>) [100,8 200x200] overflow: [50,8 250x200] PaintableWithLines (BlockContainer<BODY>) [100,8 200x200]
PaintableWithLines (BlockContainer<DIV>.row) [50,8 250x200] PaintableWithLines (BlockContainer<DIV>.row) [50,8 250x200]
PaintableWithLines (BlockContainer<DIV>.item) [50,8 125x18] PaintableWithLines (BlockContainer<DIV>.item) [50,8 125x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)

View file

@ -13,9 +13,9 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
"bar" "bar"
TextNode <#text> TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,-72 800x672] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x56] overflow: [0,-72 800x240] PaintableWithLines (BlockContainer<HTML>) [0,0 800x56] overflow: [0,0 800x168]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x40] overflow: [18,-72 764x240] PaintableWithLines (BlockContainer<BODY>) [8,8 784x40] overflow: [18,18 764x150]
PaintableWithLines (BlockContainer<DIV>#a) [18,18 764x150] PaintableWithLines (BlockContainer<DIV>#a) [18,18 764x150]
PaintableWithLines (BlockContainer(anonymous)) [18,168 764x0] PaintableWithLines (BlockContainer(anonymous)) [18,168 764x0]
PaintableWithLines (BlockContainer<DIV>#b) [18,-72 764x92] PaintableWithLines (BlockContainer<DIV>#b) [18,-72 764x92]

View file

@ -16,11 +16,11 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x52] PaintableWithLines (BlockContainer<HTML>) [0,0 800x52]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x36] overflow: [0,8 792x36] PaintableWithLines (BlockContainer<BODY>) [8,8 784x36]
PaintableWithLines (BlockContainer<DIV>) [8,8 784x36] overflow: [0,8 792x36] PaintableWithLines (BlockContainer<DIV>) [8,8 784x36]
PaintableWithLines (BlockContainer(anonymous)) [8,8 784x18] PaintableWithLines (BlockContainer(anonymous)) [8,8 784x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (ListItemBox(anonymous)) [24,26 768x18] overflow: [0,26 792x18] PaintableWithLines (ListItemBox(anonymous)) [24,26 768x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [0,26.5 12x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [0,26.5 12x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [8,44 784x0] PaintableWithLines (BlockContainer(anonymous)) [8,44 784x0]

View file

@ -15,7 +15,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x34] PaintableWithLines (BlockContainer<HTML>) [0,0 800x34]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x18] PaintableWithLines (BlockContainer<BODY>) [8,8 784x18]
PaintableWithLines (BlockContainer<DETAILS>) [8,8 784x18] PaintableWithLines (BlockContainer<DETAILS>) [8,8 784x18]
PaintableWithLines (ListItemBox<SUMMARY>) [32,8 760x18] overflow: [8,8 784x18] PaintableWithLines (ListItemBox<SUMMARY>) [32,8 760x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [8,8.5 12x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [8,8.5 12x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<SLOT>) [8,26 784x0] PaintableWithLines (BlockContainer<SLOT>) [8,26 784x0]

View file

@ -22,7 +22,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x52] PaintableWithLines (BlockContainer<HTML>) [0,0 800x52]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x36] PaintableWithLines (BlockContainer<BODY>) [8,8 784x36]
PaintableWithLines (BlockContainer<DETAILS>) [8,8 784x36] PaintableWithLines (BlockContainer<DETAILS>) [8,8 784x36]
PaintableWithLines (ListItemBox<SUMMARY>) [32,8 760x18] overflow: [8,8 784x18] PaintableWithLines (ListItemBox<SUMMARY>) [32,8 760x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [8,8.5 12x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [8,8.5 12x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<SLOT>) [8,26 784x18] PaintableWithLines (BlockContainer<SLOT>) [8,26 784x18]

View file

@ -13,7 +13,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x154] PaintableWithLines (BlockContainer<HTML>) [0,0 800x154]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x138] PaintableWithLines (BlockContainer<BODY>) [8,8 784x138]
PaintableWithLines (BlockContainer<DETAILS>) [8,8 784x138] PaintableWithLines (BlockContainer<DETAILS>) [8,8 784x138]
PaintableWithLines (ListItemBox<SUMMARY>) [92,68 640x18] overflow: [68,68 664x18] PaintableWithLines (ListItemBox<SUMMARY>) [92,68 640x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [68,68.5 12x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [68,68.5 12x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<SLOT>) [68,86 664x0] PaintableWithLines (BlockContainer<SLOT>) [68,86 664x0]

View file

@ -11,8 +11,8 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x39] PaintableWithLines (BlockContainer<HTML>) [0,0 800x39]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x23] overflow: [8,1 784x38] PaintableWithLines (BlockContainer<BODY>) [8,8 784x23] overflow: [8,8 784x31]
FieldSetPaintable (FieldSetBox<FIELDSET>) [10,8 780x23] overflow: [12,1 776x38] FieldSetPaintable (FieldSetBox<FIELDSET>) [10,8 780x23] overflow: [12,10 776x29]
PaintableWithLines (LegendBox<LEGEND>) [24,1 40.328125x18] PaintableWithLines (LegendBox<LEGEND>) [24,1 40.328125x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [8,31 784x0] PaintableWithLines (BlockContainer(anonymous)) [8,31 784x0]

View file

@ -7,7 +7,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <div.orange> at (48,-12) content-size 100x100 positioned [BFC] children: inline BlockContainer <div.orange> at (48,-12) content-size 100x100 positioned [BFC] children: inline
TextNode <#text> TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,-22 800x622] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x76] PaintableWithLines (BlockContainer<HTML>) [0,0 800x76]
PaintableWithLines (BlockContainer<BODY>) [18,18 764x40] PaintableWithLines (BlockContainer<BODY>) [18,18 764x40]
PaintableBox (Box<DIV>.pink) [28,28 744x20] PaintableBox (Box<DIV>.pink) [28,28 744x20]

View file

@ -18,7 +18,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x482] PaintableWithLines (BlockContainer<HTML>) [0,0 800x482]
PaintableBox (Box<BODY>.hero) [9,9 502x464] overflow: [9,10 502x462] PaintableBox (Box<BODY>.hero) [9,9 502x464] overflow: [10,10 501x462]
PaintableWithLines (BlockContainer<DIV>.upper) [9,10 502x462] PaintableWithLines (BlockContainer<DIV>.upper) [9,10 502x462]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)

View file

@ -7,7 +7,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x16] PaintableWithLines (BlockContainer<HTML>) [0,0 800x16]
PaintableBox (Box<BODY>) [8,8 784x0] overflow: [8,-42 100x200] PaintableBox (Box<BODY>) [8,8 784x0] overflow: [8,8 100x150]
PaintableWithLines (BlockContainer<DIV>.abspos) [8,-42 100x100] overflow: [8,-42 100x200] PaintableWithLines (BlockContainer<DIV>.abspos) [8,-42 100x100] overflow: [8,-42 100x200]
PaintableWithLines (BlockContainer<DIV>.green) [8,-42 100x200] PaintableWithLines (BlockContainer<DIV>.green) [8,-42 100x200]

View file

@ -6,10 +6,10 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <(anonymous)> (not painted) [BFC] children: inline BlockContainer <(anonymous)> (not painted) [BFC] children: inline
TextNode <#text> TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [-92,0 892x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x116] overflow: [-92,0 892x116] PaintableWithLines (BlockContainer<HTML>) [0,0 800x116]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x100] overflow: [-92,8 884x100] PaintableWithLines (BlockContainer<BODY>) [8,8 784x100]
PaintableWithLines (BlockContainer<DIV>#container-of-flex) [8,8 100x100] overflow: [-92,8 200x100] PaintableWithLines (BlockContainer<DIV>#container-of-flex) [8,8 100x100]
PaintableBox (Box<DIV>#flex) [-92,8 200x100] PaintableBox (Box<DIV>#flex) [-92,8 200x100]
SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto)

View file

@ -7,7 +7,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x71.984375] PaintableWithLines (BlockContainer<HTML>) [0,0 800x71.984375]
PaintableBox (Box<BODY>) [9,9 782x53.984375] overflow: [10,9 780x52.984375] PaintableBox (Box<BODY>) [9,9 782x53.984375]
ImagePaintable (ImageBox<IMG>) [10,9 68.65625x52] ImagePaintable (ImageBox<IMG>) [10,9 68.65625x52]
SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto)

View file

@ -10,7 +10,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x122] PaintableWithLines (BlockContainer<HTML>) [0,0 800x122]
PaintableWithLines (BlockContainer<BODY>) [9,9 782x104] PaintableWithLines (BlockContainer<BODY>) [9,9 782x104]
PaintableBox (Box<DIV>.grid-container) [10,10 780x102] overflow: [11,10 778x102] PaintableBox (Box<DIV>.grid-container) [10,10 780x102] overflow: [11,11 778x101]
PaintableWithLines (BlockContainer<DIV>#max-height-item.grid-item) [11,10 778x102] PaintableWithLines (BlockContainer<DIV>#max-height-item.grid-item) [11,10 778x102]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)

View file

@ -16,7 +16,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x100] PaintableWithLines (BlockContainer<HTML>) [0,0 800x100]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x84] overflow: [8,7 784x85] PaintableWithLines (BlockContainer<BODY>) [8,8 784x84]
PaintableWithLines (BlockContainer<INPUT>) [8,7 202x84] PaintableWithLines (BlockContainer<INPUT>) [8,7 202x84]
PaintableBox (Box<DIV>) [9,8 200x82] PaintableBox (Box<DIV>) [9,8 200x82]
PaintableWithLines (BlockContainer<DIV>) [11,9 98x80] PaintableWithLines (BlockContainer<DIV>) [11,9 98x80]

View file

@ -17,11 +17,11 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x39] PaintableWithLines (BlockContainer<HTML>) [0,0 800x39]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x23] PaintableWithLines (BlockContainer<BODY>) [8,8 784x23]
PaintableWithLines (BlockContainer<INPUT>) [8,9 200x16] overflow: [8,9 202x17] PaintableWithLines (BlockContainer<INPUT>) [8,9 200x16] overflow: [8,9 202x17]
PaintableWithLines (BlockContainer<DIV>) [8,15 202x6] overflow: [9,10 200x16] PaintableWithLines (BlockContainer<DIV>) [8,15 202x6] overflow: [9,16 200x10]
PaintableWithLines (BlockContainer<DIV>) [9,16 100x4] PaintableWithLines (BlockContainer<DIV>) [9,16 100x4]
PaintableWithLines (BlockContainer<DIV>) [109,10 16x16] PaintableWithLines (BlockContainer<DIV>) [109,10 16x16]
PaintableWithLines (BlockContainer<INPUT>) [208,9 200x16] overflow: [208,9 202x17] PaintableWithLines (BlockContainer<INPUT>) [208,9 200x16] overflow: [208,9 202x17]
PaintableWithLines (BlockContainer<DIV>) [208,15 202x6] overflow: [209,10 200x16] PaintableWithLines (BlockContainer<DIV>) [208,15 202x6] overflow: [209,16 200x10]
PaintableWithLines (BlockContainer<DIV>) [209,16 20x4] PaintableWithLines (BlockContainer<DIV>) [209,16 20x4]
PaintableWithLines (BlockContainer<DIV>) [229,10 16x16] PaintableWithLines (BlockContainer<DIV>) [229,10 16x16]

View file

@ -9,7 +9,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x417] PaintableWithLines (BlockContainer<HTML>) [0,0 800x417]
PaintableWithLines (BlockContainer<BODY>) [8,200 784x17] overflow: [8,200 784x17.5] PaintableWithLines (BlockContainer<BODY>) [8,200 784x17] overflow: [8,200 784x17.5]
PaintableWithLines (ListItemBox<SPAN>) [232,200 360x17] overflow: [208,200 384x17.5] PaintableWithLines (ListItemBox<SPAN>) [232,200 360x17] overflow: [232,200 360x17.5]
MarkerPaintable (ListItemMarkerBox(anonymous)) [208,200.5 12x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [208,200.5 12x17]
PaintableWithLines (BlockContainer(anonymous)) [8,400 784x0] PaintableWithLines (BlockContainer(anonymous)) [8,400 784x0]

View file

@ -122,27 +122,27 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,16 784x368] PaintableWithLines (BlockContainer<BODY>) [8,16 784x368]
PaintableWithLines (BlockContainer<OL>) [8,16 784x368] PaintableWithLines (BlockContainer<OL>) [8,16 784x368]
PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0]
PaintableWithLines (ListItemBox<LI>) [48,16 744x18] overflow: [25.3125,16 766.6875x18] PaintableWithLines (ListItemBox<LI>) [48,16 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [25.3125,16.5 10.6875x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [25.3125,16.5 10.6875x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0]
PaintableWithLines (ListItemBox<LI>) [48,34 744x18] overflow: [14.03125,34 777.96875x18] PaintableWithLines (ListItemBox<LI>) [48,34 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [14.03125,34.5 21.96875x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [14.03125,34.5 21.96875x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0]
PaintableWithLines (BlockContainer<DIV>) [48,52 744x18] PaintableWithLines (BlockContainer<DIV>) [48,52 744x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,70 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,70 744x0]
PaintableWithLines (BlockContainer<DIV>) [48,70 744x72] overflow: [13.75,70 778.25x72] PaintableWithLines (BlockContainer<DIV>) [48,70 744x72]
PaintableWithLines (BlockContainer(anonymous)) [48,70 744x18] PaintableWithLines (BlockContainer(anonymous)) [48,70 744x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<DIV>) [48,88 744x54] overflow: [13.75,88 778.25x54] PaintableWithLines (BlockContainer<DIV>) [48,88 744x54]
PaintableWithLines (BlockContainer(anonymous)) [48,88 744x18] PaintableWithLines (BlockContainer(anonymous)) [48,88 744x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<DIV>) [48,106 744x36] overflow: [13.75,106 778.25x36] PaintableWithLines (BlockContainer<DIV>) [48,106 744x36]
PaintableWithLines (BlockContainer(anonymous)) [48,106 744x18] PaintableWithLines (BlockContainer(anonymous)) [48,106 744x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (ListItemBox<DIV>) [48,124 744x18] overflow: [13.75,124 778.25x18] PaintableWithLines (ListItemBox<DIV>) [48,124 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [13.75,124.5 22.25x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [13.75,124.5 22.25x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,142 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,142 744x0]
@ -157,30 +157,30 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (InlineNode<SPAN>) [70.65625,192 12.609375x18] PaintableWithLines (InlineNode<SPAN>) [70.65625,192 12.609375x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (ListItemBox<LI>) [48,226 744x18] overflow: [15.09375,226 776.90625x18] PaintableWithLines (ListItemBox<LI>) [48,226 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [15.09375,226.5 20.90625x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [15.09375,226.5 20.90625x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,244 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,244 744x0]
PaintableWithLines (BlockContainer<DIV>) [48,244 744x70] overflow: [14.390625,244 777.609375x70] PaintableWithLines (BlockContainer<DIV>) [48,244 744x70]
PaintableWithLines (BlockContainer(anonymous)) [48,244 744x18] PaintableWithLines (BlockContainer(anonymous)) [48,244 744x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<DIV>) [48,262 744x52] overflow: [14.390625,262 777.609375x52] PaintableWithLines (BlockContainer<DIV>) [48,262 744x52]
PaintableWithLines (BlockContainer(anonymous)) [48,262 744x18] PaintableWithLines (BlockContainer(anonymous)) [48,262 744x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (ListItemBox<P>) [48,296 744x18] overflow: [14.390625,296 777.609375x18] PaintableWithLines (ListItemBox<P>) [48,296 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [14.390625,296.5 21.609375x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [14.390625,296.5 21.609375x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,330 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,330 744x0]
PaintableWithLines (BlockContainer(anonymous)) [48,330 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,330 744x0]
PaintableWithLines (ListItemBox<LI>) [48,330 744x18] overflow: [14.109375,330 777.890625x18] PaintableWithLines (ListItemBox<LI>) [48,330 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [14.109375,330.5 21.890625x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [14.109375,330.5 21.890625x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,348 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,348 744x0]
PaintableWithLines (ListItemBox<SPAN>) [48,348 744x18] overflow: [14.125,348 777.875x18] PaintableWithLines (ListItemBox<SPAN>) [48,348 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [14.125,348.5 21.875x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [14.125,348.5 21.875x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,366 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,366 744x0]
PaintableWithLines (ListItemBox<LI>) [48,366 744x18] overflow: [13.359375,366 778.640625x18] PaintableWithLines (ListItemBox<LI>) [48,366 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [13.359375,366.5 22.640625x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [13.359375,366.5 22.640625x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,384 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,384 744x0]

View file

@ -38,25 +38,25 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <(anonymous)> at (8,104) content-size 784x0 children: inline BlockContainer <(anonymous)> at (8,104) content-size 784x0 children: inline
TextNode <#text> TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [-0.84375,0 800.84375x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x104] overflow: [-0.84375,0 800.84375x104] PaintableWithLines (BlockContainer<HTML>) [0,0 800x104]
PaintableWithLines (BlockContainer<BODY>) [8,16 784x72] overflow: [-0.84375,16 792.84375x72] PaintableWithLines (BlockContainer<BODY>) [8,16 784x72]
PaintableWithLines (BlockContainer(anonymous)) [8,16 784x0] PaintableWithLines (BlockContainer(anonymous)) [8,16 784x0]
PaintableWithLines (BlockContainer<OL>) [8,16 784x72] overflow: [-0.84375,16 792.84375x72] PaintableWithLines (BlockContainer<OL>) [8,16 784x72]
PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0]
PaintableWithLines (ListItemBox<LI>) [48,16 744x18] overflow: [22.9375,16 769.0625x18] PaintableWithLines (ListItemBox<LI>) [48,16 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [22.9375,16.5 13.0625x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [22.9375,16.5 13.0625x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0]
PaintableWithLines (ListItemBox<LI>) [48,34 744x18] overflow: [3.671875,34 788.328125x18] PaintableWithLines (ListItemBox<LI>) [48,34 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [3.671875,34.5 32.328125x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [3.671875,34.5 32.328125x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0]
PaintableWithLines (ListItemBox<LI>) [48,52 744x18] overflow: [-0.84375,52 792.84375x18] PaintableWithLines (ListItemBox<LI>) [48,52 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [-0.84375,52.5 36.84375x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [-0.84375,52.5 36.84375x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,70 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,70 744x0]
PaintableWithLines (ListItemBox<LI>) [48,70 744x18] overflow: [18.96875,70 773.03125x18] PaintableWithLines (ListItemBox<LI>) [48,70 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [18.96875,70.5 17.03125x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [18.96875,70.5 17.03125x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,88 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,88 744x0]

View file

@ -68,35 +68,35 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,16 784x176] PaintableWithLines (BlockContainer<BODY>) [8,16 784x176]
PaintableWithLines (BlockContainer<OL>) [8,16 784x176] PaintableWithLines (BlockContainer<OL>) [8,16 784x176]
PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0]
PaintableWithLines (ListItemBox<LI>) [48,16 744x18] overflow: [25.3125,16 766.6875x18] PaintableWithLines (ListItemBox<LI>) [48,16 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [25.3125,16.5 10.6875x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [25.3125,16.5 10.6875x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0]
PaintableWithLines (ListItemBox<LI>) [48,34 744x18] overflow: [14.03125,34 777.96875x18] PaintableWithLines (ListItemBox<LI>) [48,34 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [14.03125,34.5 21.96875x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [14.03125,34.5 21.96875x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0]
PaintableWithLines (ListItemBox<DIV>) [48,52 744x18] overflow: [13.75,52 778.25x18] PaintableWithLines (ListItemBox<DIV>) [48,52 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [13.75,52.5 22.25x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [13.75,52.5 22.25x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,70 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,70 744x0]
PaintableWithLines (ListItemBox<LI>) [48,70 744x18] overflow: [15.09375,70 776.90625x18] PaintableWithLines (ListItemBox<LI>) [48,70 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [15.09375,70.5 20.90625x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [15.09375,70.5 20.90625x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,88 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,88 744x0]
PaintableWithLines (ListItemBox<P>) [48,104 744x18] overflow: [14.390625,104 777.609375x18] PaintableWithLines (ListItemBox<P>) [48,104 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [14.390625,104.5 21.609375x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [14.390625,104.5 21.609375x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,138 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,138 744x0]
PaintableWithLines (ListItemBox<LI>) [48,138 744x18] overflow: [14.109375,138 777.890625x18] PaintableWithLines (ListItemBox<LI>) [48,138 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [14.109375,138.5 21.890625x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [14.109375,138.5 21.890625x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,156 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,156 744x0]
PaintableWithLines (ListItemBox<SPAN>) [48,156 744x18] overflow: [14.125,156 777.875x18] PaintableWithLines (ListItemBox<SPAN>) [48,156 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [14.125,156.5 21.875x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [14.125,156.5 21.875x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,174 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,174 744x0]
PaintableWithLines (ListItemBox<LI>) [48,174 744x18] overflow: [13.359375,174 778.640625x18] PaintableWithLines (ListItemBox<LI>) [48,174 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [13.359375,174.5 22.640625x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [13.359375,174.5 22.640625x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,192 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,192 744x0]

View file

@ -66,34 +66,34 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,16 784x142] PaintableWithLines (BlockContainer<BODY>) [8,16 784x142]
PaintableWithLines (BlockContainer<OL>) [8,16 784x54] PaintableWithLines (BlockContainer<OL>) [8,16 784x54]
PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0]
PaintableWithLines (ListItemBox<LI>) [48,16 744x18] overflow: [13.25,16 778.75x18] PaintableWithLines (ListItemBox<LI>) [48,16 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [13.25,16.5 22.75x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [13.25,16.5 22.75x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0]
PaintableWithLines (ListItemBox<LI>) [48,34 744x18] overflow: [16.5,34 775.5x18] PaintableWithLines (ListItemBox<LI>) [48,34 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [16.5,34.5 19.5x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [16.5,34.5 19.5x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0]
PaintableWithLines (ListItemBox<LI>) [48,52 744x18] overflow: [14.03125,52 777.96875x18] PaintableWithLines (ListItemBox<LI>) [48,52 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [14.03125,52.5 21.96875x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [14.03125,52.5 21.96875x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,70 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,70 744x0]
PaintableWithLines (BlockContainer(anonymous)) [8,86 784x0] PaintableWithLines (BlockContainer(anonymous)) [8,86 784x0]
PaintableWithLines (BlockContainer<OL>) [8,86 784x72] PaintableWithLines (BlockContainer<OL>) [8,86 784x72]
PaintableWithLines (BlockContainer(anonymous)) [48,86 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,86 744x0]
PaintableWithLines (ListItemBox<LI>) [48,86 744x18] overflow: [25.3125,86 766.6875x18] PaintableWithLines (ListItemBox<LI>) [48,86 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [25.3125,86.5 10.6875x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [25.3125,86.5 10.6875x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,104 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,104 744x0]
PaintableWithLines (ListItemBox<LI>) [48,104 744x18] overflow: [23.203125,104 768.796875x18] PaintableWithLines (ListItemBox<LI>) [48,104 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [23.203125,104.5 12.796875x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [23.203125,104.5 12.796875x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,122 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,122 744x0]
PaintableWithLines (ListItemBox<LI>) [48,122 744x18] overflow: [22.921875,122 769.078125x18] PaintableWithLines (ListItemBox<LI>) [48,122 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [22.921875,122.5 13.078125x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [22.921875,122.5 13.078125x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,140 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,140 744x0]
PaintableWithLines (ListItemBox<LI>) [48,140 744x18] overflow: [22.9375,140 769.0625x18] PaintableWithLines (ListItemBox<LI>) [48,140 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [22.9375,140.5 13.0625x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [22.9375,140.5 13.0625x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,158 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,158 744x0]

View file

@ -117,10 +117,10 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
SVGSVGPaintable (SVGSVGBox<svg>) [338,83 102x52] overflow: [339,84 100x100] SVGSVGPaintable (SVGSVGBox<svg>) [338,83 102x52] overflow: [339,84 100x100]
SVGPathPaintable (SVGGeometryBox<circle>) [339,84 100x100] SVGPathPaintable (SVGGeometryBox<circle>) [339,84 100x100]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [448,83 102x52] overflow: [449,59 100x100] SVGSVGPaintable (SVGSVGBox<svg>) [448,83 102x52] overflow: [449,84 100x75]
SVGPathPaintable (SVGGeometryBox<circle>) [449,59 100x100] SVGPathPaintable (SVGGeometryBox<circle>) [449,59 100x100]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [558,83 102x52] overflow: [559,34 100x100] SVGSVGPaintable (SVGSVGBox<svg>) [558,83 102x52]
SVGPathPaintable (SVGGeometryBox<circle>) [559,34 100x100] SVGPathPaintable (SVGGeometryBox<circle>) [559,34 100x100]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [668,8 52x127] SVGSVGPaintable (SVGSVGBox<svg>) [668,8 52x127]
@ -134,10 +134,10 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
SVGSVGPaintable (SVGSVGBox<svg>) [68,135 52x127] overflow: [69,136 125x125] SVGSVGPaintable (SVGSVGBox<svg>) [68,135 52x127] overflow: [69,136 125x125]
SVGPathPaintable (SVGGeometryBox<circle>) [69,136 125x125] SVGPathPaintable (SVGGeometryBox<circle>) [69,136 125x125]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [128,135 52x127] overflow: [91.5,136 125x125] SVGSVGPaintable (SVGSVGBox<svg>) [128,135 52x127] overflow: [129,136 87.5x125]
SVGPathPaintable (SVGGeometryBox<circle>) [91.5,136 125x125] SVGPathPaintable (SVGGeometryBox<circle>) [91.5,136 125x125]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [188,135 52x127] overflow: [114,136 125x125] SVGSVGPaintable (SVGSVGBox<svg>) [188,135 52x127]
SVGPathPaintable (SVGGeometryBox<circle>) [114,136 125x125] SVGPathPaintable (SVGGeometryBox<circle>) [114,136 125x125]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
SVGSVGPaintable (SVGSVGBox<svg>) [248,200 162x62] SVGSVGPaintable (SVGSVGBox<svg>) [248,200 162x62]

View file

@ -95,7 +95,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,0 800x700] ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,0 800x700]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x700] PaintableWithLines (BlockContainer<HTML>) [0,0 800x700]
PaintableWithLines (BlockContainer<BODY>) [50,50 700x600] PaintableWithLines (BlockContainer<BODY>) [50,50 700x600]
SVGSVGPaintable (SVGSVGBox<svg>) [50,150 200x100] overflow: [45.6875,150 204.3125x100] SVGSVGPaintable (SVGSVGBox<svg>) [50,150 200x100]
SVGGraphicsPaintable (SVGGraphicsBox<g>) [45.6875,199.828125 118.78125x47.453125] SVGGraphicsPaintable (SVGGraphicsBox<g>) [45.6875,199.828125 118.78125x47.453125]
SVGPathPaintable (SVGGeometryBox<path>) [45.6875,199.828125 118.78125x47.453125] SVGPathPaintable (SVGGeometryBox<path>) [45.6875,199.828125 118.78125x47.453125]
SVGGraphicsPaintable (SVGGraphicsBox<g>) [84.5,159.5 81x81] SVGGraphicsPaintable (SVGGraphicsBox<g>) [84.5,159.5 81x81]

View file

@ -20,7 +20,7 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x64] PaintableWithLines (BlockContainer<HTML>) [0,0 800x64]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x48] PaintableWithLines (BlockContainer<BODY>) [8,8 784x48]
SVGSVGPaintable (SVGSVGBox<svg>) [8,8 48x48] overflow: [8,8 58x68] SVGSVGPaintable (SVGSVGBox<svg>) [8,8 48x48] overflow: [8,8 58x68]
SVGForeignObjectPaintable (SVGForeignObjectBox<foreignObject>) [26,36 40x40] overflow: [16,16 60x70] SVGForeignObjectPaintable (SVGForeignObjectBox<foreignObject>) [26,36 40x40] overflow: [26,36 50x50]
PaintableWithLines (BlockContainer<DIV>.lmao) [26,36 50x50] PaintableWithLines (BlockContainer<DIV>.lmao) [26,36 50x50]
PaintableWithLines (BlockContainer(anonymous)) [8,56 784x0] PaintableWithLines (BlockContainer(anonymous)) [8,56 784x0]

View file

@ -16,7 +16,7 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x408] PaintableWithLines (BlockContainer<HTML>) [0,0 800x408]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x392] PaintableWithLines (BlockContainer<BODY>) [8,8 784x392]
SVGSVGPaintable (SVGSVGBox<svg>) [8,8 784x392] overflow: [6.046875,6.046875 787.921875x395.921875] SVGSVGPaintable (SVGSVGBox<svg>) [8,8 784x392] overflow: [8,8 785.96875x393.96875]
SVGPathPaintable (SVGGeometryBox<line>) [6.046875,135.40625 787.921875x3.921875] SVGPathPaintable (SVGGeometryBox<line>) [6.046875,135.40625 787.921875x3.921875]
SVGPathPaintable (SVGGeometryBox<line>) [6.046875,264.765625 787.921875x3.921875] SVGPathPaintable (SVGGeometryBox<line>) [6.046875,264.765625 787.921875x3.921875]
SVGPathPaintable (SVGGeometryBox<line>) [264.765625,6.046875 3.921875x395.921875] SVGPathPaintable (SVGGeometryBox<line>) [264.765625,6.046875 3.921875x395.921875]

View file

@ -25,10 +25,10 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <(anonymous)> (not painted) children: inline BlockContainer <(anonymous)> (not painted) children: inline
TextNode <#text> TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,-2 800x602] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x106] overflow: [0,-2 800x108] PaintableWithLines (BlockContainer<HTML>) [0,0 800x106]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x90] overflow: [8,-2 784x100] PaintableWithLines (BlockContainer<BODY>) [8,8 784x90]
PaintableWithLines (TableWrapper(anonymous)) [8,8 60.46875x90] overflow: [8,-2 60.46875x100] PaintableWithLines (TableWrapper(anonymous)) [8,8 60.46875x90]
PaintableBox (Box<TABLE>) [8,36 60.46875x24] PaintableBox (Box<TABLE>) [8,36 60.46875x24]
PaintableWithLines (BlockContainer<CAPTION>) [8,-2 60.46875x38] PaintableWithLines (BlockContainer<CAPTION>) [8,-2 60.46875x38]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)

View file

@ -51,22 +51,22 @@ ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer(anonymous)) [8,16 784x0] PaintableWithLines (BlockContainer(anonymous)) [8,16 784x0]
PaintableWithLines (BlockContainer<UL>.A) [8,16 784x36] PaintableWithLines (BlockContainer<UL>.A) [8,16 784x36]
PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,16 744x0]
PaintableWithLines (ListItemBox<LI>) [48,16 744x18] overflow: [24,16 768x18] PaintableWithLines (ListItemBox<LI>) [48,16 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [24,16.5 12x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [24,16.5 12x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,34 744x0]
PaintableWithLines (ListItemBox<LI>) [48,34 744x18] overflow: [24,34 768x18] PaintableWithLines (ListItemBox<LI>) [48,34 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [24,34.5 12x17] MarkerPaintable (ListItemMarkerBox(anonymous)) [24,34.5 12x17]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,52 744x0]
PaintableWithLines (BlockContainer(anonymous)) [8,68 784x0] PaintableWithLines (BlockContainer(anonymous)) [8,68 784x0]
PaintableWithLines (BlockContainer<UL>.B) [8,68 784x36] PaintableWithLines (BlockContainer<UL>.B) [8,68 784x36]
PaintableWithLines (BlockContainer(anonymous)) [48,68 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,68 744x0]
PaintableWithLines (ListItemBox<LI>) [48,68 744x18] overflow: [40,68 752x18] PaintableWithLines (ListItemBox<LI>) [48,68 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [40,68 4x9] MarkerPaintable (ListItemMarkerBox(anonymous)) [40,68 4x9]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,86 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,86 744x0]
PaintableWithLines (ListItemBox<LI>) [48,86 744x18] overflow: [40,86 752x18] PaintableWithLines (ListItemBox<LI>) [48,86 744x18]
MarkerPaintable (ListItemMarkerBox(anonymous)) [40,86 4x9] MarkerPaintable (ListItemMarkerBox(anonymous)) [40,86 4x9]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [48,104 744x0] PaintableWithLines (BlockContainer(anonymous)) [48,104 744x0]

View file

@ -0,0 +1 @@
html scrollWidth: 800

View file

@ -2,16 +2,16 @@ Harness status: OK
Found 11 tests Found 11 tests
4 Pass 7 Pass
7 Fail 4 Fail
Fail .flexbox 1 Pass .flexbox 1
Fail .flexbox 2 Pass .flexbox 2
Fail .flexbox 3 Pass .flexbox 3
Pass .flexbox 4 Pass .flexbox 4
Pass .flexbox 5 Fail .flexbox 5
Fail .flexbox 6 Fail .flexbox 6
Fail .flexbox 7 Fail .flexbox 7
Fail .flexbox 8 Pass .flexbox 8
Pass .flexbox 9 Pass .flexbox 9
Pass .flexbox 10 Pass .flexbox 10
Fail .flexbox 11 Fail .flexbox 11

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<script src="include.js"></script>
<style>
.a {
border: 1px solid green;
height: 50px;
position: absolute;
right: 0;
width: 1000px;
}
</style>
<div class="a"></div>
<script>
test(() => {
// scrollWidth must not exceed the viewport size (800px)
println(`html scrollWidth: ${document.querySelector('html').scrollWidth}`);
});
</script>