Add support for position:sticky

This leverages the position:sticky support in WebRender to bring basic
support for position:sticky in Servo. There are still some issues with
nested sticky flows as well as a few other corner cases. Tests are
imported from WPT and can be removed once we update to the latest
version.
This commit is contained in:
Martin Robinson 2017-08-24 09:37:49 +02:00
parent 4725a05bfb
commit bc455c8a1f
84 changed files with 5729 additions and 50 deletions

View file

@ -10,7 +10,8 @@ use app_units::Au;
use block::{BlockFlow, CandidateBSizeIterator, ISizeAndMarginsComputer};
use block::{ISizeConstraintInput, ISizeConstraintSolution};
use context::LayoutContext;
use display_list_builder::{BlockFlowDisplayListBuilding, BorderPaintingMode, DisplayListBuildState};
use display_list_builder::{BlockFlowDisplayListBuilding, BorderPaintingMode};
use display_list_builder::{DisplayListBuildState, EstablishContainingBlock};
use euclid::Point2D;
use flow;
use flow::{BaseFlow, EarlyAbsolutePositionInfo, Flow, FlowClass, ImmutableFlowUtils, OpaqueFlow};
@ -503,7 +504,7 @@ impl Flow for TableFlow {
}
fn collect_stacking_contexts(&mut self, state: &mut DisplayListBuildState) {
self.block_flow.collect_stacking_contexts(state);
self.block_flow.collect_stacking_contexts_for_block(state, EstablishContainingBlock::Yes);
}
fn repair_style(&mut self, new_style: &::ServoArc<ComputedValues>) {