aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout')
-rw-r--r--components/layout/block.rs6
-rw-r--r--components/layout/display_list_builder.rs2
-rw-r--r--components/layout/floats.rs2
-rw-r--r--components/layout/flow.rs2
-rw-r--r--components/layout/inline.rs2
-rw-r--r--components/layout/model.rs8
-rw-r--r--components/layout/table_row.rs2
-rw-r--r--components/layout/table_wrapper.rs4
-rw-r--r--components/layout/traversal.rs12
-rw-r--r--components/layout/wrapper.rs13
10 files changed, 22 insertions, 31 deletions
diff --git a/components/layout/block.rs b/components/layout/block.rs
index 10bb2a055aa..eaa2e33f83a 100644
--- a/components/layout/block.rs
+++ b/components/layout/block.rs
@@ -88,7 +88,7 @@ impl FloatedBlockInfo {
}
/// The solutions for the block-size-and-margins constraint equation.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
struct BSizeConstraintSolution {
block_start: Au,
block_size: Au,
@@ -1962,7 +1962,7 @@ impl fmt::Debug for BlockFlow {
}
/// The inputs for the inline-sizes-and-margins constraint equation.
-#[derive(Debug, Copy)]
+#[derive(Debug, Copy, Clone)]
pub struct ISizeConstraintInput {
pub computed_inline_size: MaybeAuto,
pub inline_start_margin: MaybeAuto,
@@ -1992,7 +1992,7 @@ impl ISizeConstraintInput {
}
/// The solutions for the inline-size-and-margins constraint equation.
-#[derive(Copy, Debug)]
+#[derive(Copy, Clone, Debug)]
pub struct ISizeConstraintSolution {
pub inline_start: Au,
pub inline_size: Au,
diff --git a/components/layout/display_list_builder.rs b/components/layout/display_list_builder.rs
index 9061b845c9a..890a3b12128 100644
--- a/components/layout/display_list_builder.rs
+++ b/components/layout/display_list_builder.rs
@@ -1584,7 +1584,7 @@ impl BaseFlowDisplayListBuilding for BaseFlow {
}
// A helper data structure for gradients.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
struct StopRun {
start_offset: f32,
end_offset: f32,
diff --git a/components/layout/floats.rs b/components/layout/floats.rs
index 0d0ea9e0617..5f61760829b 100644
--- a/components/layout/floats.rs
+++ b/components/layout/floats.rs
@@ -29,7 +29,7 @@ impl FloatKind {
}
/// The kind of clearance: left, right, or both.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub enum ClearType {
Left,
Right,
diff --git a/components/layout/flow.rs b/components/layout/flow.rs
index 6ebf8530c90..5c058439d29 100644
--- a/components/layout/flow.rs
+++ b/components/layout/flow.rs
@@ -693,7 +693,7 @@ pub type DescendantOffsetIter<'a> = Zip<DescendantIter<'a>, IterMut<'a, Au>>;
/// Information needed to compute absolute (i.e. viewport-relative) flow positions (not to be
/// confused with absolutely-positioned flows).
-#[derive(RustcEncodable, Copy)]
+#[derive(RustcEncodable, Copy, Clone)]
pub struct AbsolutePositionInfo {
/// The size of the containing block for relatively-positioned descendants.
pub relative_containing_block_size: LogicalSize<Au>,
diff --git a/components/layout/inline.rs b/components/layout/inline.rs
index d755678d7ed..e4f35b2f69a 100644
--- a/components/layout/inline.rs
+++ b/components/layout/inline.rs
@@ -65,7 +65,7 @@ static FONT_SUPERSCRIPT_OFFSET_RATIO: f64 = 0.34;
/// with a float or a horizontal wall of the containing block. The block-start
/// inline-start corner of the green zone is the same as that of the line, but
/// the green zone can be taller and wider than the line itself.
-#[derive(RustcEncodable, Debug, Copy)]
+#[derive(RustcEncodable, Debug, Copy, Clone)]
pub struct Line {
/// A range of line indices that describe line breaks.
///
diff --git a/components/layout/model.rs b/components/layout/model.rs
index ebd70dcae84..8aecee621ee 100644
--- a/components/layout/model.rs
+++ b/components/layout/model.rs
@@ -19,7 +19,7 @@ use util::geometry::Au;
use util::logical_geometry::LogicalMargin;
/// A collapsible margin. See CSS 2.1 § 8.3.1.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct AdjoiningMargins {
/// The value of the greatest positive margin.
pub most_positive: Au,
@@ -62,7 +62,7 @@ impl AdjoiningMargins {
}
/// Represents the block-start and block-end margins of a flow with collapsible margins. See CSS 2.1 § 8.3.1.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub enum CollapsibleMargins {
/// Margins may not collapse with this flow.
None(Au, Au),
@@ -260,7 +260,7 @@ impl MarginCollapseInfo {
}
}
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub enum MarginCollapseState {
AccumulatingCollapsibleTopMargin,
AccumulatingMarginIn,
@@ -357,7 +357,7 @@ impl IntrinsicISizesContribution {
}
/// Useful helper data type when computing values for blocks and positioned elements.
-#[derive(Copy, PartialEq, Debug)]
+#[derive(Copy, Clone, PartialEq, Debug)]
pub enum MaybeAuto {
Auto,
Specified(Au),
diff --git a/components/layout/table_row.rs b/components/layout/table_row.rs
index ef3f70f5d6f..3beeb1f7fe2 100644
--- a/components/layout/table_row.rs
+++ b/components/layout/table_row.rs
@@ -66,7 +66,7 @@ impl Encodable for TableRowFlow {
}
/// Information about the column inline size and span for each cell.
-#[derive(RustcEncodable, Copy)]
+#[derive(RustcEncodable, Copy, Clone)]
pub struct CellIntrinsicInlineSize {
/// Inline sizes that this cell contributes to the column.
pub column_size: ColumnIntrinsicInlineSize,
diff --git a/components/layout/table_wrapper.rs b/components/layout/table_wrapper.rs
index a336ca55cfb..5db3674341c 100644
--- a/components/layout/table_wrapper.rs
+++ b/components/layout/table_wrapper.rs
@@ -37,7 +37,7 @@ use style::properties::ComputedValues;
use style::values::CSSFloat;
use style::values::computed::LengthOrPercentageOrAuto;
-#[derive(Copy, RustcEncodable, Debug)]
+#[derive(Copy, Clone, RustcEncodable, Debug)]
pub enum TableLayout {
Fixed,
Auto
@@ -565,7 +565,7 @@ impl<'a> Add for &'a AutoLayoutCandidateGuess {
/// The `CSSFloat` member specifies the weight of the smaller of the two guesses, on a scale from
/// 0.0 to 1.0.
-#[derive(Copy, PartialEq, Debug)]
+#[derive(Copy, Clone, PartialEq, Debug)]
enum SelectedAutoLayoutCandidateGuess {
UseMinimumGuess,
InterpolateBetweenMinimumGuessAndMinimumPercentageGuess(CSSFloat),
diff --git a/components/layout/traversal.rs b/components/layout/traversal.rs
index 5fe8ec3e66d..0441f4fa76a 100644
--- a/components/layout/traversal.rs
+++ b/components/layout/traversal.rs
@@ -119,7 +119,7 @@ fn insert_ancestors_into_bloom_filter(bf: &mut Box<BloomFilter>,
/// The recalc-style-for-node traversal, which styles each node and must run before
/// layout computation. This computes the styles applied to each node.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct RecalcStyleForNode<'a> {
pub layout_context: &'a LayoutContext<'a>,
}
@@ -211,7 +211,7 @@ impl<'a> PreorderDomTraversal for RecalcStyleForNode<'a> {
}
/// The flow construction traversal, which builds flows for styled nodes.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct ConstructFlows<'a> {
pub layout_context: &'a LayoutContext<'a>,
}
@@ -310,7 +310,7 @@ impl<'a> PostorderFlowTraversal for BubbleISizes<'a> {
}
/// The assign-inline-sizes traversal. In Gecko this corresponds to `Reflow`.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct AssignISizes<'a> {
pub layout_context: &'a LayoutContext<'a>,
}
@@ -331,7 +331,7 @@ impl<'a> PreorderFlowTraversal for AssignISizes<'a> {
/// layout computation. Determines the final block-sizes for all layout objects, computes
/// positions, and computes overflow regions. In Gecko this corresponds to `Reflow` and
/// `FinishAndStoreOverflow`.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct AssignBSizesAndStoreOverflow<'a> {
pub layout_context: &'a LayoutContext<'a>,
}
@@ -356,7 +356,7 @@ impl<'a> PostorderFlowTraversal for AssignBSizesAndStoreOverflow<'a> {
}
}
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct ComputeAbsolutePositions<'a> {
pub layout_context: &'a LayoutContext<'a>,
}
@@ -368,7 +368,7 @@ impl<'a> PreorderFlowTraversal for ComputeAbsolutePositions<'a> {
}
}
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct BuildDisplayList<'a> {
pub layout_context: &'a LayoutContext<'a>,
}
diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs
index 44b184b897c..db99183939e 100644
--- a/components/layout/wrapper.rs
+++ b/components/layout/wrapper.rs
@@ -170,7 +170,7 @@ pub trait TLayoutNode {
/// A wrapper so that layout can access only the methods that it should have access to. Layout must
/// only ever see these and must never see instances of `LayoutJS`.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct LayoutNode<'a> {
/// The wrapped node.
node: LayoutJS<Node>,
@@ -179,15 +179,6 @@ pub struct LayoutNode<'a> {
pub chain: PhantomData<&'a ()>,
}
-impl<'ln> Clone for LayoutNode<'ln> {
- fn clone(&self) -> LayoutNode<'ln> {
- LayoutNode {
- node: self.node.clone(),
- chain: self.chain,
- }
- }
-}
-
impl<'a> PartialEq for LayoutNode<'a> {
#[inline]
fn eq(&self, other: &LayoutNode) -> bool {
@@ -520,7 +511,7 @@ impl<'a> Iterator for LayoutTreeIterator<'a> {
}
/// A wrapper around elements that ensures layout can only ever access safe properties.
-#[derive(Copy)]
+#[derive(Copy, Clone)]
pub struct LayoutElement<'le> {
element: &'le Element,
}