[webkit-changes] [WebKit/WebKit] c63ae7: Back button fails to render in region selecting pane

Alan Baradlay noreply at github.com
Thu Jun 22 08:37:55 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c63ae7fbbf2143360f49a4c955d422a7e619dfed
      https://github.com/WebKit/WebKit/commit/c63ae7fbbf2143360f49a4c955d422a7e619dfed
  Author: Alan Baradlay <zalan at apple.com>
  Date:   2023-06-22 (Thu, 22 Jun 2023)

  Changed paths:
    A LayoutTests/fast/inline/inline-with-out-of-flow-box-and-new-sibling-expected.html
    A LayoutTests/fast/inline/inline-with-out-of-flow-box-and-new-sibling.html
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp

  Log Message:
  -----------
  Back button fails to render in region selecting pane
https://bugs.webkit.org/show_bug.cgi?id=258376
<rdar://109448172>

Reviewed by Antti Koivisto.

262470 at main starts eagerly setting out-of-flow renderers' final position with the static position delta to fix bugs caused by failed invalidation
where we do not manage to mark the ancestor chain dirty and layout never reaches the containing block to compute final position.
(In short; we check how much the static position changes through inline layout and use that to compute/set the position of the
renderer which in normal cases will be overwritten when layout reaches the containing block. see commit message for details)

However in case of non-statically positioned boxes (e.g. left: 0px),
1. the change in the static position does not really affect the final position
2, and moving the renderer by the static position delta may misplace it as the logic is based on the renderer's current position which
   may or may not be the previous static position (e.g. it's a non-static value (e.g. 0px).

Normally such misplaced renderers get "fixed" when the containing block computes the final position, however
when the containing block is not dirty (there are valid cases for that) we never recover from this incorrect position.

* LayoutTests/fast/block/positioning/static_out_of_flow_inside_layout_boundary.html:
* LayoutTests/fast/inline/inline-with-out-of-flow-box-and-new-sibling-expected.html: Added.
* LayoutTests/fast/inline/inline-with-out-of-flow-box-and-new-sibling.html: Added.
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::updateRenderTreePositions):

Canonical link: https://commits.webkit.org/265404@main




More information about the webkit-changes mailing list