aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2017-01-23 08:55:44 -0800
committerGitHub <noreply@github.com>2017-01-23 08:55:44 -0800
commitb0f91193fd4fbb86fc75fc593a6fdc40dc95bfcd (patch)
tree5a030a5ff1136d90e43e9f8c0b8dcd1d73251698 /components/layout
parent1706ffd6e5a02f26f69970b3b41536a8a85ef6fe (diff)
parentd7a9c3f8e5d9224882e43a1b9b3533c11ad41aa6 (diff)
downloadservo-b0f91193fd4fbb86fc75fc593a6fdc40dc95bfcd.tar.gz
servo-b0f91193fd4fbb86fc75fc593a6fdc40dc95bfcd.zip
Auto merge of #13681 - gpoesia:master, r=mbrubeck
Fix margin size calculation for TableWrapper <!-- Please describe your changes on the following line: --> Fixes inline size calculation for TableWrapper. The table's width was always reaching the inline size equation solver as a specified variable, which was causing the system to be overdetermined when there was a margin specified for the table, and this caused the overflow reported in #12748. The fix consists in handling three cases when the table's width is not specified: if the preferred size of all columns fits, it is returned; if the minimum size does not fit, it is returned instead (it will overflow), otherwise, it is returned as a free variable (that should be solved together with the margin to some value above the minimum width and below the preferred width). --- - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #12748 - [X] There are tests for these changes <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13681) <!-- Reviewable:end -->
Diffstat (limited to 'components/layout')
-rw-r--r--components/layout/table_wrapper.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/components/layout/table_wrapper.rs b/components/layout/table_wrapper.rs
index 4f40a94e28e..01800ce3487 100644
--- a/components/layout/table_wrapper.rs
+++ b/components/layout/table_wrapper.rs
@@ -766,7 +766,13 @@ fn initial_computed_inline_size(block: &mut BlockFlow,
containing_block_inline_size);
match inline_size_from_style {
MaybeAuto::Auto => {
- MaybeAuto::Specified(min(containing_block_inline_size, preferred_width_of_all_columns))
+ if preferred_width_of_all_columns + table_border_padding <= containing_block_inline_size {
+ MaybeAuto::Specified(preferred_width_of_all_columns + table_border_padding)
+ } else if minimum_width_of_all_columns > containing_block_inline_size {
+ MaybeAuto::Specified(minimum_width_of_all_columns)
+ } else {
+ MaybeAuto::Auto
+ }
}
MaybeAuto::Specified(inline_size_from_style) => {
MaybeAuto::Specified(max(inline_size_from_style - table_border_padding,