Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Account for percentages in fixed table layout #13192

Merged
merged 3 commits into from Sep 9, 2016
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

@@ -335,13 +335,17 @@ impl Flow for TableFlow {
let containing_block_inline_size = self.block_flow.base.block_container_inline_size;

let mut num_unspecified_inline_sizes = 0;
let mut num_percentage_inline_sizes = 0;
let mut total_column_inline_size = Au(0);
let mut total_column_percentage_size = 0.0;
for column_inline_size in &self.column_intrinsic_inline_sizes {
if column_inline_size.constrained {
total_column_inline_size = total_column_inline_size +
column_inline_size.minimum_length
if column_inline_size.percentage != 0.0 {
total_column_percentage_size += column_inline_size.percentage;
num_percentage_inline_sizes += 1;
} else if column_inline_size.constrained {
total_column_inline_size += column_inline_size.minimum_length;
} else {
num_unspecified_inline_sizes += 1
num_unspecified_inline_sizes += 1;
}
}

@@ -364,20 +368,12 @@ impl Flow for TableFlow {
TableLayout::Fixed => {
// In fixed table layout, we distribute extra space among the unspecified columns
// if there are any, or among all the columns if all are specified.
// See: https://drafts.csswg.org/css-tables-3/#distributing-width-to-columns (infobox)
self.column_computed_inline_sizes.clear();
if num_unspecified_inline_sizes == 0 {
let ratio = content_inline_size.to_f32_px() /
total_column_inline_size.to_f32_px();
for column_inline_size in &self.column_intrinsic_inline_sizes {
self.column_computed_inline_sizes.push(ColumnComputedInlineSize {
size: column_inline_size.minimum_length.scale_by(ratio),
});
}
} else if num_unspecified_inline_sizes != 0 {
if num_unspecified_inline_sizes != 0 {
let extra_column_inline_size = content_inline_size - total_column_inline_size;
for column_inline_size in &self.column_intrinsic_inline_sizes {
if !column_inline_size.constrained &&
column_inline_size.percentage == 0.0 {
if !column_inline_size.constrained {
self.column_computed_inline_sizes.push(ColumnComputedInlineSize {
size: extra_column_inline_size / num_unspecified_inline_sizes,
});
@@ -387,6 +383,23 @@ impl Flow for TableFlow {
});
}
}
} else if num_percentage_inline_sizes != 0 {
let extra_column_inline_size = content_inline_size - total_column_inline_size;
let ratio = content_inline_size.to_f32_px() /
total_column_percentage_size;
for column_inline_size in &self.column_intrinsic_inline_sizes {
self.column_computed_inline_sizes.push(ColumnComputedInlineSize {
size: extra_column_inline_size.scale_by(ratio * column_inline_size.percentage),
});
}
} else {
let ratio = content_inline_size.to_f32_px() /
total_column_inline_size.to_f32_px();
for column_inline_size in &self.column_intrinsic_inline_sizes {
self.column_computed_inline_sizes.push(ColumnComputedInlineSize {
size: column_inline_size.minimum_length.scale_by(ratio),
});
}
}
}
_ => {

This file was deleted.

@@ -1500,6 +1500,18 @@
"url": "/_mozilla/css/first_of_type_pseudo_a.html"
}
],
"css/fixed_percent.html": [
{
"path": "css/fixed_percent.html",
"references": [
[
"/_mozilla/css/fixed_percent_ref.html",
"=="
]
],
"url": "/_mozilla/css/fixed_percent.html"
}
],
"css/fixed_width_overrides_child_intrinsic_width_a.html": [
{
"path": "css/fixed_width_overrides_child_intrinsic_width_a.html",
@@ -10894,6 +10906,18 @@
"url": "/_mozilla/css/first_of_type_pseudo_a.html"
}
],
"css/fixed_percent.html": [
{
"path": "css/fixed_percent.html",
"references": [
[
"/_mozilla/css/fixed_percent_ref.html",
"=="
]
],
"url": "/_mozilla/css/fixed_percent.html"
}
],
"css/fixed_width_overrides_child_intrinsic_width_a.html": [
{
"path": "css/fixed_width_overrides_child_intrinsic_width_a.html",
@@ -0,0 +1,16 @@
<!doctype html>
<meta charset="utf-8">
<title>Table with fixed layout gives according to percentages</title>
<link rel="match" href="fixed_percent_ref.html">
<link rel="spec" href="https://drafts.csswg.org/css-tables-3/#distributing-width-to-columns">
<style>
#c {
display: table;
width: 100%;
table-layout: fixed;
}
#d {
width: 100%;
}
</style>
<div id=c><div id=d>Test text</div></div>
@@ -0,0 +1,4 @@
<!DOCTYPE html>
<title>Table with fixed layout gives according to percentages</title>
Test text

ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.