[webkit-changes] [WebKit/WebKit] d01779: Do not repaint newly moved inline box
Alan Baradlay
noreply at github.com
Mon Mar 18 07:43:36 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d017799bfec158028d9d0678477b3c42db76ed6e
https://github.com/WebKit/WebKit/commit/d017799bfec158028d9d0678477b3c42db76ed6e
Author: Alan Baradlay <zalan at apple.com>
Date: 2024-03-18 (Mon, 18 Mar 2024)
Changed paths:
M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
M Source/WebCore/rendering/RenderBlockFlow.cpp
Log Message:
-----------
Do not repaint newly moved inline box
https://bugs.webkit.org/show_bug.cgi?id=267141
rdar://120555470
Reviewed by Antti Koivisto.
1. Repaint needs uptodate geometry information to compute the damaged area
2. Whenever we invalidate the line layout path, we lose all geometry information so a full repaint is being issued on the very first invalidation.
(note that there may be multiple mutations happening the same time)
This patch ensures that such repaints are _not_ issued on newly inserted content.
Since we don't keep track of whether a particular renderer has already issued repaint, moving renders between blocks could
potentially be repainted twice; initially when they get detached and later when they get inserted at their new position.
Repaint issued at this later stage most likely results in incorrectly computed damage area as all relevant geometries are
relative to the former block -and in some cases it may even trigger crashes as we don't find associated layout/display boxes in
the new block.
* Source/WebCore/rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::invalidateLineLayoutPath):
Originally-landed-as: 272448.98 at safari-7618-branch (77a82bb2bcde). rdar://124556609
Canonical link: https://commits.webkit.org/276267@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