[LayoutNG] Paint multicol container outlines correctly.
Introducing NGPhysicalFragment::IsCSSBox(), to distinguish between fragments generated from CSS boxes [1] and those generated by the layout engine to hold CSS box fragments. We have a lot of checks for fragments not being line boxes before working on the associated LayoutObject, but we need to do the same for column boxes. This CL only changes HasLayer(), to fix outline painting, but we could do the same for many of the other methods here. Column boxes don't establish layers, so return false. The layout object that a column box is associated with does establish a layer (for legacy reasons). The outline code [2] has special-code for layers, but shouldn't treat each column as establishing a layer. While we wait for NG column painting to be implemented, we now need to guard against entering columns when painting a box fragment, and instead let the paint layer established by the multicol container and the flow thread drive the painting (like before). [1] https://www.w3.org/TR/css-display-3/#box-tree [2] NGPhysicalContainerFragment::AddOutlineRectsForDescendant() Change-Id: I6fcd753cbed2e5f19560eddf45e903dd58bf4bef Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1912713Reviewed-by:Koji Ishii <kojii@chromium.org> Commit-Queue: Morten Stenshorne <mstensho@chromium.org> Cr-Commit-Position: refs/heads/master@{#715395}
Showing
Please register or sign in to comment