mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
layout: Take relative position offsets for inlines and inline-blocks
into account only once. There were two bugs here: (1) relative position applied to scanned/unscanned text fragments independently of the container element that applied that relative position, causing double-counting; (2) relative position applied to inline block fragments independently of the wrapped block itself, causing double-counting. This commit also removes the `cascade_anonymous` function and the related `Fragment` constructor. They were unused, and their functionality has been replaced by the `modify_style_for_*` series of functions. Closes #7067.
This commit is contained in:
parent
3ad49fc689
commit
8640cf5588
11 changed files with 102 additions and 88 deletions
|
@ -39,7 +39,7 @@ use style::computed_values::content::ContentItem;
|
|||
use style::computed_values::{border_collapse, clear, mix_blend_mode, overflow_wrap, overflow_x};
|
||||
use style::computed_values::{position, text_align, text_decoration, transform_style, white_space};
|
||||
use style::computed_values::{word_break, z_index};
|
||||
use style::properties::{self, ComputedValues, cascade_anonymous};
|
||||
use style::properties::{self, ComputedValues};
|
||||
use style::values::computed::{LengthOrPercentage, LengthOrPercentageOrAuto};
|
||||
use style::values::computed::{LengthOrPercentageOrNone};
|
||||
use text::TextRunScanner;
|
||||
|
@ -761,37 +761,6 @@ impl Fragment {
|
|||
}
|
||||
}
|
||||
|
||||
/// Constructs a new `Fragment` instance for an anonymous table object.
|
||||
pub fn new_anonymous_from_specific_info(node: &ThreadSafeLayoutNode,
|
||||
specific: SpecificFragmentInfo)
|
||||
-> Fragment {
|
||||
// CSS 2.1 § 17.2.1 This is for non-inherited properties on anonymous table fragments
|
||||
// example:
|
||||
//
|
||||
// <div style="display: table">
|
||||
// Foo
|
||||
// </div>
|
||||
//
|
||||
// Anonymous table fragments, SpecificFragmentInfo::TableRow and
|
||||
// SpecificFragmentInfo::TableCell, are generated around `Foo`, but they shouldn't inherit
|
||||
// the border.
|
||||
|
||||
let node_style = cascade_anonymous(&**node.style());
|
||||
let writing_mode = node_style.writing_mode;
|
||||
Fragment {
|
||||
node: node.opaque(),
|
||||
style: Arc::new(node_style),
|
||||
restyle_damage: node.restyle_damage(),
|
||||
border_box: LogicalRect::zero(writing_mode),
|
||||
border_padding: LogicalMargin::zero(writing_mode),
|
||||
margin: LogicalMargin::zero(writing_mode),
|
||||
specific: specific,
|
||||
inline_context: None,
|
||||
pseudo: node.get_pseudo_element_type().strip(),
|
||||
debug_id: layout_debug::generate_unique_debug_id(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Constructs a new `Fragment` instance from an opaque node.
|
||||
pub fn from_opaque_node_and_style(node: OpaqueNode,
|
||||
pseudo: PseudoElementType<()>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue