Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7b53201b5eeb31379032bac023bccc125877e993
      
https://github.com/WebKit/WebKit/commit/7b53201b5eeb31379032bac023bccc125877e993
  Author: Alan Baradlay <za...@apple.com>
  Date:   2023-09-09 (Sat, 09 Sep 2023)

  Changed paths:
    M Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.h

  Log Message:
  -----------
  [IFC][Partial layout] 
InlineItemsBuilder::m_isNonBidiTextAndForcedLineBreakOnlyContent may get stale 
with partial content
https://bugs.webkit.org/show_bug.cgi?id=261373

Reviewed by Antti Koivisto.

m_isNonBidiTextAndForcedLineBreakOnlyContent tells whether the _entire_ IFC 
content is text and/or forced line break only.
This patch fixes the case where the partial content is indeed text and/or 
forced line break, but the non-mutated part of the content has other type of 
boxes.

As the first step of inline item collection on partial content, we traverse the 
inline tree starting from the root
all the way to the damaged box while pushing/poping subtree roots. It ensures 
that we can continue collecting mutated content
even when it is nested inside inline boxes
e.g.
 This is old <span>content but here <span>we've got some newly appended and 
nested content</span><span>
During this initialization we can also check for 
m_isNonBidiTextAndForcedLineBreakOnlyContent.

* Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp:
(WebCore::Layout::isNonBidiTextOrForcedLineBreak):
(WebCore::Layout::InlineItemsBuilder::traverseUntilDamaged):
(WebCore::Layout::InlineItemsBuilder::initializeLayoutQueue):
(WebCore::Layout::InlineItemsBuilder::collectInlineItems):
(WebCore::Layout::traverseUntilDamaged): Deleted.
(WebCore::Layout::initializeLayoutQueue): Deleted.
* Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.h:

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to