mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-11 05:25:32 +03:00
LibWeb: Use appropriate containing block width to get width of table
This solves the issue that previously width table-wrapper containing block were used in the places were containing block of table-root should be used.
This commit is contained in:
parent
da768e7c46
commit
4d971b5bc5
Notes:
sideshowbarker
2024-07-17 06:20:50 +09:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/SerenityOS/serenity/commit/4d971b5bc5 Pull-request: https://github.com/SerenityOS/serenity/pull/18621
@ -2,11 +2,11 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
|
||||
BlockContainer <html> at (1,1) content-size 798x120 [BFC] children: not-inline
|
||||
BlockContainer <body> at (10,10) content-size 780x102 children: not-inline
|
||||
TableWrapper <(anonymous)> at (10,10) content-size 102x102 [BFC] children: not-inline
|
||||
TableBox <table> at (11,11) content-size 102x100 [TFC] children: not-inline
|
||||
TableRowGroupBox <tbody> at (11,11) content-size 102x100 children: not-inline
|
||||
TableRowBox <tr> at (11,11) content-size 102x100 children: not-inline
|
||||
TableCellBox <td> at (13,49.082031) content-size 98x23.835937 [BFC] children: not-inline
|
||||
BlockContainer <(anonymous)> at (14,50.082031) content-size 96x21.835937 children: inline
|
||||
TableBox <table> at (11,11) content-size 100x100 [TFC] children: not-inline
|
||||
TableRowGroupBox <tbody> at (11,11) content-size 100x100 children: not-inline
|
||||
TableRowBox <tr> at (11,11) content-size 100x100 children: not-inline
|
||||
TableCellBox <td> at (13,49.082031) content-size 96x23.835937 [BFC] children: not-inline
|
||||
BlockContainer <(anonymous)> at (14,50.082031) content-size 94x21.835937 children: inline
|
||||
line 0 width: 0, height: 21.835937, bottom: 21.835937, baseline: 16.914062
|
||||
frag 0 from TextNode start: 0, length: 0, rect: [14,50.082031 0x21.835937]
|
||||
""
|
||||
|
@ -2,14 +2,14 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline
|
||||
BlockContainer <html> at (0,0) content-size 800x108.21875 [BFC] children: not-inline
|
||||
BlockContainer <body> at (8,8) content-size 784x92.21875 children: not-inline
|
||||
TableWrapper <(anonymous)> at (8,8) content-size 782x92.21875 [BFC] children: not-inline
|
||||
TableBox <table.ambox> at (9,9) content-size 782x90.21875 [TFC] children: not-inline
|
||||
TableBox <table.ambox> at (9,9) content-size 780x90.21875 [TFC] children: not-inline
|
||||
BlockContainer <(anonymous)> at (8,8) content-size 0x0 children: inline
|
||||
TextNode <#text>
|
||||
TableRowGroupBox <tbody> at (9,9) content-size 782x90.21875 children: not-inline
|
||||
TableRowBox <tr> at (9,9) content-size 782x90.21875 children: not-inline
|
||||
TableRowGroupBox <tbody> at (9,9) content-size 780x90.21875 children: not-inline
|
||||
TableRowBox <tr> at (9,9) content-size 780x90.21875 children: not-inline
|
||||
TableCellBox <td.mbox-image> at (10,29.109375) content-size 50x50 [BFC] children: not-inline
|
||||
BlockContainer <div.mbox-image-div> at (10,29.109375) content-size 50x50 children: not-inline
|
||||
TableCellBox <td.mbox-text> at (62,10) content-size 728x88.21875 [BFC] children: inline
|
||||
TableCellBox <td.mbox-text> at (62,10) content-size 726x88.21875 [BFC] children: inline
|
||||
line 0 width: 689.640625, height: 17.46875, bottom: 17.46875, baseline: 13.53125
|
||||
frag 0 from TextNode start: 1, length: 84, rect: [62,10 689.640625x17.46875]
|
||||
"In a scene set in a lawyer's office, the lawyer sits alone and bounces a rubber ball"
|
||||
|
@ -212,9 +212,11 @@ void TableFormattingContext::compute_table_width()
|
||||
|
||||
auto& computed_values = table_box().computed_values();
|
||||
|
||||
CSSPixels width_of_table_containing_block = m_state.get(*table_box().containing_block()).content_width();
|
||||
|
||||
// Percentages on 'width' and 'height' on the table are relative to the table wrapper box's containing block,
|
||||
// not the table wrapper box itself.
|
||||
CSSPixels width_of_table_containing_block = m_state.get(*table_wrapper().containing_block()).content_width();
|
||||
CSSPixels width_of_table_wrapper_containing_block = m_state.get(*table_wrapper().containing_block()).content_width();
|
||||
|
||||
// The row/column-grid width minimum (GRIDMIN) width is the sum of the min-content width
|
||||
// of all the columns plus cell spacing or borders.
|
||||
@ -233,7 +235,7 @@ void TableFormattingContext::compute_table_width()
|
||||
// The used min-width of a table is the greater of the resolved min-width, CAPMIN, and GRIDMIN.
|
||||
auto used_min_width = grid_min;
|
||||
if (!computed_values.min_width().is_auto()) {
|
||||
used_min_width = max(used_min_width, computed_values.min_width().resolved(table_box(), CSS::Length::make_px(width_of_table_containing_block)).to_px(table_box()));
|
||||
used_min_width = max(used_min_width, computed_values.min_width().resolved(table_box(), CSS::Length::make_px(width_of_table_wrapper_containing_block)).to_px(table_box()));
|
||||
}
|
||||
|
||||
CSSPixels used_width;
|
||||
@ -245,10 +247,10 @@ void TableFormattingContext::compute_table_width()
|
||||
// If the table-root’s width property has a computed value (resolving to
|
||||
// resolved-table-width) other than auto, the used width is the greater
|
||||
// of resolved-table-width, and the used min-width of the table.
|
||||
CSSPixels resolved_table_width = computed_values.width().resolved(table_box(), CSS::Length::make_px(width_of_table_containing_block)).to_px(table_box());
|
||||
CSSPixels resolved_table_width = computed_values.width().resolved(table_box(), CSS::Length::make_px(width_of_table_wrapper_containing_block)).to_px(table_box());
|
||||
used_width = max(resolved_table_width, used_min_width);
|
||||
if (!computed_values.max_width().is_none())
|
||||
used_width = min(used_width, computed_values.max_width().resolved(table_box(), CSS::Length::make_px(width_of_table_containing_block)).to_px(table_box()));
|
||||
used_width = min(used_width, computed_values.max_width().resolved(table_box(), CSS::Length::make_px(width_of_table_wrapper_containing_block)).to_px(table_box()));
|
||||
}
|
||||
|
||||
// The assignable table width is the used width of the table minus the total horizontal border spacing (if any).
|
||||
|
Loading…
Reference in New Issue
Block a user