Skip to content

[caret-color] Clip the override paint to the caret rect.#59798

Merged
chromium-wpt-export-bot merged 1 commit into
masterfrom
chromium-export-cl-7829948
May 12, 2026
Merged

[caret-color] Clip the override paint to the caret rect.#59798
chromium-wpt-export-bot merged 1 commit into
masterfrom
chromium-export-cl-7829948

Conversation

@chromium-wpt-export-bot
Copy link
Copy Markdown
Collaborator

@chromium-wpt-export-bot chromium-wpt-export-bot commented May 11, 2026

With current paint code, we noticed that when the block caret
first moves past the end of the text (no character is overlapped)
and then moves back to a position inside the text, every glyph of
the fragment gets re-painted in the second caret-color.

This is due to the call of text_painter.Paint() with slice
[char_start, char_end] is honored only when font.DrawText() actually
re-shapes. When CachedTextBlob() returns non-null, the slice is
discarded and the entire cached blob is redrawn with the override
fill color.

The solution here is to clip the override paint to the caret rect.

Bug: 498556169
Change-Id: I30ad92029a23f502226058eaf2db0bbe180a3b45
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7829948
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Kent Tamura <tkent@chromium.org>
Commit-Queue: Ziran Sun <zsun@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1629124}

With current paint code, we noticed that when the block caret
first moves past the end of the text (no character is overlapped)
and then moves back to a position inside the text, every glyph of
the fragment gets re-painted in the second caret-color.

This is due to the call of text_painter.Paint() with slice
[char_start, char_end] is honored only when font.DrawText() actually
re-shapes. When CachedTextBlob() returns non-null, the slice is
discarded and the entire cached blob is redrawn with the override
fill color.

The solution here is to clip the override paint to the caret rect.

Bug: 498556169
Change-Id: I30ad92029a23f502226058eaf2db0bbe180a3b45
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7829948
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Kent Tamura <tkent@chromium.org>
Commit-Queue: Ziran Sun <zsun@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1629124}
Copy link
Copy Markdown
Collaborator

@wpt-pr-bot wpt-pr-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The review process for this patch is being conducted in the Chromium project.

@chromium-wpt-export-bot chromium-wpt-export-bot merged commit 8fbc8d5 into master May 12, 2026
14 of 16 checks passed
@chromium-wpt-export-bot chromium-wpt-export-bot deleted the chromium-export-cl-7829948 branch May 12, 2026 09:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants