From 1ceaab06aa681141c8ed72b966a2dc6f0841f9e2 Mon Sep 17 00:00:00 2001 From: roytam1 Date: Tue, 26 May 2026 10:23:03 +0800 Subject: [PATCH] import from UXP: [layout] Hide accessible carets when needed. (4bf23690) --- layout/base/AccessibleCaretManager.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/layout/base/AccessibleCaretManager.cpp b/layout/base/AccessibleCaretManager.cpp index 2b865640b..d9acc7462 100644 --- a/layout/base/AccessibleCaretManager.cpp +++ b/layout/base/AccessibleCaretManager.cpp @@ -408,11 +408,21 @@ AccessibleCaretManager::UpdateCaretsForSelectionMode(UpdateCaretsHint aHint) if (firstCaretResult == PositionChangedResult::Changed || secondCaretResult == PositionChangedResult::Changed) { + nsWeakFrame weakStartFrame = startFrame; + nsWeakFrame weakEndFrame = endFrame; + // Flush layout to make the carets intersection correct. FlushLayout(); if (IsTerminated()) { return; } + if ((startFrame && !weakStartFrame.IsAlive()) || + (endFrame && !weakEndFrame.IsAlive())) { + mFirstCaret.get()->SetAppearance(Appearance::NormalNotShown); + mSecondCaret.get()->SetAppearance(Appearance::NormalNotShown); + DispatchCaretStateChangedEvent(CaretChangedReason::Visibilitychange); + return; + } } if (aHint == UpdateCaretsHint::Default) {