[webkit-changes] [WebKit/WebKit] d7c47c: [IFC][Invalidation] Overlapping text when mutating...

Alan Baradlay noreply at github.com
Thu Aug 15 10:44:29 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d7c47c0f80c4da0ba51c5388fe4ec65672718ec1
      https://github.com/WebKit/WebKit/commit/d7c47c0f80c4da0ba51c5388fe4ec65672718ec1
  Author: Alan Baradlay <zalan at apple.com>
  Date:   2024-08-15 (Thu, 15 Aug 2024)

  Changed paths:
    A LayoutTests/fast/dynamic/overlapping-content-when-inline-block-content-changes-expected.html
    A LayoutTests/fast/dynamic/overlapping-content-when-inline-block-content-changes.html
    M Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp
    M Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.h
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h
    M Source/WebCore/rendering/RenderBlockFlow.cpp

  Log Message:
  -----------
  [IFC][Invalidation] Overlapping text when mutating inline-block content
https://bugs.webkit.org/show_bug.cgi?id=278102

Reviewed by Antti Koivisto.

We check for damage extent (and based on that trigger partial layout) when
 - box gets added/removed
 - text content changes
 - style changes on any of the boxes participating in inline layout

However we ignore the case when the geometry change my come from content
change inside an inline level box (e.g. inline-block).
In such cases we have to let the parent IFC know about the change so that it can
compute the damage extent.

In this patch we simply opt out of partial layout when this happens.

* LayoutTests/fast/dynamic/overlapping-content-when-inline-block-content-changes-expected.html: Added.
* LayoutTests/fast/dynamic/overlapping-content-when-inline-block-content-changes.html: Added.
* Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp:
(WebCore::Layout::InlineInvalidation::inlineLevelBoxContentWillChange):
* Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.h:
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::boxContentWillChange):
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:
* Source/WebCore/rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutModernLines):

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list