Permalink
Commits on Jun 24, 2018
  1. Give stacking contexts the right reference frame id

    mrobinson authored and gw3583 committed Jun 22, 2018
    Stacking contexts that create reference frames should be created with
    the positioning node set to the reference frames that surround them.
  2. New reference frames should create containing blocks

    mrobinson authored and gw3583 committed Jun 22, 2018
    Transforms should always create containing blocks. This bug already
    existed in Servo, but was covered up by the reference frame id
    replacement feature in WebRender. Now that we create reference frames
    manually we need to fix it.
  3. Allow inline elements to create reference frames

    mrobinson authored and gw3583 committed Jun 22, 2018
    This is important so that transforms applied to elements actually apply
    to the display items created for those elements.
Commits on Jun 19, 2018
Commits on Jun 4, 2018
  1. Use reference frames explicitly for fixed positioning

    mrobinson committed May 8, 2018
    Now that WebRender gives us reference frame ClipIds, we can use those to
    implement fixed positioning in Servo. This will allow us to remove the
    feature from WebRender entirely.
Commits on May 9, 2018
  1. Generate a frame when a transaction scrolls

    mrobinson committed May 9, 2018
    This no longer happens automatically in WebRender, so we must do it
    manually.
    
    Fixes #20762.
Commits on Mar 16, 2018
  1. Update to handle WebRender API changes

    mrobinson authored and gw3583 committed Mar 14, 2018
    Items now only take a clipping rectangle instead of a LocalClip.
Commits on Mar 6, 2018
  1. Stop using LocalClip::RoundedRect

    mrobinson committed Mar 6, 2018
    We would like to remove this functionality from WebRender, so convert
    its use to clip scroll nodes. This change also removes the redundant
    BlocBlockStackingContextType in favor of Option<StackingContextType>,
    which is just as expressive. This simplifies the code a bit.
Commits on Feb 6, 2018
  1. Update WebRender

    mrobinson committed Jan 16, 2018
    This allows servo to use the ExternalScrollId API from WebRender fixing
    some issues related to duplicate scroll root ids.
    
    Fixes #17176.
    Fixes #19287.
    Fixes #19648.
Commits on Oct 30, 2017
  1. Update WR to use the new sticky positioning API

    mrobinson committed Oct 30, 2017
Commits on Oct 24, 2017
  1. Wait as late as possible to assign ClipIds

    mrobinson committed Oct 16, 2017
    This will allow Servo to create ClipScrollNodes later during display
    list construction, which will be necessary once rounded rectangles
    are removed from the LocalClip structure. Instead of keeping track
    of the ClipId of each ClipScrollNode, we keep track of its index in an
    array of ClipScrollNodes. This will allow us to access them without a
    hash lookup.
Commits on Oct 23, 2017
  1. Fix the test count in grouping formatter

    mrobinson committed Oct 23, 2017
    Now that the WPT update has settled a bit, it seems safe to make sure
    that the grouping_formatter properly consumes the data structure
    provided.
Commits on Oct 18, 2017
  1. Remove DisplayListTraversal

    mrobinson committed Oct 18, 2017
    It's no longer necessary because we always just walk through the
    display list one item at a time.
  2. Fix duplicate stacking context creation for anonymous Flows

    mrobinson committed Oct 16, 2017
    Anonymous nodes were previously creating duplicate stacking contexts,
    one for each node in the anonymous node chain. This change eliminates
    that for tables.
    
    Additionally the use of stacking context ids based on node addresses is
    no longer necessary since stacking contexts no longer control scrolling.
    This is the first step in eliminating the dependency between node
    addresses and ClipScrollNodes which causes issues like #16425.
  3. Use WebRender to compute text index on click events

    mrobinson committed Sep 30, 2017
    This is the second half of switching over to WebRender for hit testing.
    Now that WebRender gives us the location of the hit tested point in the
    display item, we can use that to calculate text index.
Commits on Oct 17, 2017
  1. Switch to using WebRender hit testing

    mrobinson committed Sep 30, 2017
    This trades quite a bit of complicated code in Servo for few more
    messages and a significant performance improvement. In particular,
    WebRender can search the entire display list at once instead of
    ping-ponging down the pipeline tree. This allows us to send mouse
    events to the correct pipeline immediately.
Commits on Oct 3, 2017
  1. TickAnimations should create a display list

    mrobinson committed Oct 3, 2017
    This is a regression from the removal of ReflowQueryType.
    
    Fixes #18701.
  2. Fix the test count in the WPT grouping_formatter

    mrobinson committed Oct 3, 2017
    The internal WPT API seems to have changed again, so we must revert the
    previous change here to get the correct test count.
Commits on Sep 30, 2017
  1. Combine ReflowGoal and ReflowQueryType

    mrobinson committed Sep 30, 2017
    This simplifies the logic in the layout_thread and makes it clearer
    which types of reflows generate display lists and cause display updates.
Commits on Sep 15, 2017
  1. Fix panic when tables having position:sticky

    mrobinson committed Sep 14, 2017
    We no longer do any stacking context or clip node creation for table
    wrappers, instead relying on their TableFlows to do this.
  2. Properly handle stacking context collection for truncated fragments

    mrobinson committed Sep 14, 2017
    Before we did not properly descend intro truncated fragments when
    collecting stacking contexts. This change makes sure that we descend
    properly
    
    Fixes #18254.
    Fixes #17072.
  3. Rename ScrollRoot to ClipScrollNode

    mrobinson committed Aug 30, 2017
    ScrollRoot is an ever increasingly inaccurate name for this thing and
    WebRender consistently uses ClipScrollNode nowadays. Stick with the
    WebRender terminology to be consistent.
Commits on Sep 14, 2017
  1. Fix the test count in the WPT formatter

    mrobinson committed Sep 14, 2017
    This was broken by a change in the test harness.
Commits on Sep 12, 2017
  1. Disable position:sticky tests

    mrobinson committed Sep 12, 2017
    Sending scroll positions to Webender is way too flaky to run the
    position:sticky tests at this time. We need to disable them for now, so
    that other Servo work can continue.
  2. Separate stacking context collection and display list building state

    mrobinson committed Aug 30, 2017
    These are two different passes during layout, but previously they
    shared a state object. While some of the members are the same, many are
    different so we separate them out into two separate objects. We also
    change the HashMaps of these state objects to use the FnvHashMap.
Commits on Sep 5, 2017
  1. Add support for position:sticky

    mrobinson committed Aug 24, 2017
    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.
Commits on Aug 24, 2017
  1. Allow overflow:scroll without a stacking context

    mrobinson committed Aug 22, 2017
    Fix the long-standing bug where items that are positioned and have
    overflow:scroll or overflow:auto automatically create stacking
    contexts. In order to do this we need to fix another bug where display
    list sorting can put a Clip or ScrollFrame definition after the first
    time it is used in a display list.
Commits on Aug 17, 2017
  1. Improve containing block creation for position:absolute flows

    mrobinson committed Aug 17, 2017
    Instead of only promoting flows with positioned fragments to containing
    blocks, also do this for flows which have the transform, perspective or
    filter properties set. This is what the spec requires and also fixes
    some failing tests. It will allow us to stop creating stacking contexts
    for overflow:hidden and overflow:scroll flows.
    
    Fixes #18091.
Commits on Aug 16, 2017
  1. Use the is_absolute_containing_block method everywhere

    mrobinson committed Aug 16, 2017
    This is a better approach than relying on
    contains_positioned_fragments, because in the future other properties
    will create absolute containing blocks.
  2. Remove unused StackingContextType

    mrobinson committed Aug 16, 2017
    This hasn't been in use for quite some time.
Commits on Aug 10, 2017
  1. Remove an unused DisplayListBuildState member

    mrobinson committed Aug 10, 2017
    I'm not sure this member was ever used.
Commits on Aug 3, 2017
  1. Fix fixed position items with parents with CSS clips

    mrobinson committed Jul 27, 2017
    In order to properly handle CSS clipping, we need to keep track of what
    the different kinds of clips that we have. On one hand, clipping due to
    overflow rules should respect the containing block hierarchy, while CSS
    clipping should respect the flow tree hierarchy. In order to represent
    the complexity of items that are scrolled via one clip/scroll frame and
    clipped by another we keep track of that status with a
    ClipAndScrollInfo.
  2. Fix warning in scroll root id assignment to TableColGroupFlow

    mrobinson committed Aug 3, 2017
    The traversal currently expects every flow to have a scroll root id
    assigned, even if it doesn't produce any display items. This change
    fixes the error that arises from this situation.
Commits on Jul 25, 2017
Commits on Jul 18, 2017