mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
layout: Implement border-spacing
per CSS 2.1 § 17.6.1 and the legacy
`cellspacing` attribute per HTML5 § 14.3.9. Table layout code has been refactored to push the spacing down to rowgroups and rows; this will aid the implementation of `border-collapse` as well. This commit also fixes two nasty issues in table layout: * In fixed layout, extra space would not be divided among columns that had auto width but had nonzero minimum width. * In automatic layout, extra space would be distributed to constrained columns as well even if unconstrained columns with percentage equal to zero were present.
This commit is contained in:
parent
e8f1a046c6
commit
586c12ccc4
26 changed files with 690 additions and 208 deletions
|
@ -193,16 +193,19 @@ impl Stylist {
|
|||
|
||||
let mut shareable = true;
|
||||
|
||||
// Step 1: Virtual rules that are synthesized from legacy HTML attributes.
|
||||
self.synthesize_presentational_hints_for_legacy_attributes(element,
|
||||
applicable_declarations,
|
||||
&mut shareable);
|
||||
|
||||
// Step 2: Normal rules.
|
||||
// Step 1: Normal user-agent rules.
|
||||
map.user_agent.normal.get_all_matching_rules(element,
|
||||
parent_bf,
|
||||
applicable_declarations,
|
||||
&mut shareable);
|
||||
|
||||
// Step 2: Presentational hints.
|
||||
self.synthesize_presentational_hints_for_legacy_attributes(element,
|
||||
applicable_declarations,
|
||||
&mut shareable);
|
||||
|
||||
// Step 3: User and author normal rules.
|
||||
map.user.normal.get_all_matching_rules(element,
|
||||
parent_bf,
|
||||
applicable_declarations,
|
||||
|
@ -212,27 +215,27 @@ impl Stylist {
|
|||
applicable_declarations,
|
||||
&mut shareable);
|
||||
|
||||
// Step 3: Normal style attributes.
|
||||
// Step 4: Normal style attributes.
|
||||
style_attribute.map(|sa| {
|
||||
shareable = false;
|
||||
applicable_declarations.vec_push(
|
||||
GenericDeclarationBlock::from_declarations(sa.normal.clone()))
|
||||
});
|
||||
|
||||
// Step 4: Author-supplied `!important` rules.
|
||||
// Step 5: Author-supplied `!important` rules.
|
||||
map.author.important.get_all_matching_rules(element,
|
||||
parent_bf,
|
||||
applicable_declarations,
|
||||
&mut shareable);
|
||||
|
||||
// Step 5: `!important` style attributes.
|
||||
// Step 6: `!important` style attributes.
|
||||
style_attribute.map(|sa| {
|
||||
shareable = false;
|
||||
applicable_declarations.vec_push(
|
||||
GenericDeclarationBlock::from_declarations(sa.important.clone()))
|
||||
});
|
||||
|
||||
// Step 6: User and UA `!important` rules.
|
||||
// Step 7: User and UA `!important` rules.
|
||||
map.user.important.get_all_matching_rules(element,
|
||||
parent_bf,
|
||||
applicable_declarations,
|
||||
|
@ -277,3 +280,4 @@ impl PerPseudoElementSelectorMap {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue