diff --git a/layout/base/AccessibleCaretManager.cpp b/layout/base/AccessibleCaretManager.cpp index 35cd3979fc01..3fb066d305b8 100644 --- a/layout/base/AccessibleCaretManager.cpp +++ b/layout/base/AccessibleCaretManager.cpp @@ -99,9 +99,9 @@ AccessibleCaretManager::HideCarets() void AccessibleCaretManager::UpdateCarets(UpdateCaretsHint aHint) { - mCaretMode = GetCaretMode(); + mLastUpdateCaretMode = GetCaretMode(); - switch (mCaretMode) { + switch (mLastUpdateCaretMode) { case CaretMode::None: HideCarets(); break; @@ -402,7 +402,7 @@ AccessibleCaretManager::OnScrollStart() void AccessibleCaretManager::OnScrollEnd() { - if (mCaretMode != GetCaretMode()) { + if (mLastUpdateCaretMode != GetCaretMode()) { return; } @@ -418,7 +418,7 @@ AccessibleCaretManager::OnScrollEnd() void AccessibleCaretManager::OnScrollPositionChanged() { - if (mCaretMode != GetCaretMode()) { + if (mLastUpdateCaretMode != GetCaretMode()) { return; } @@ -429,7 +429,7 @@ AccessibleCaretManager::OnScrollPositionChanged() void AccessibleCaretManager::OnReflow() { - if (mCaretMode != GetCaretMode()) { + if (mLastUpdateCaretMode != GetCaretMode()) { return; } diff --git a/layout/base/AccessibleCaretManager.h b/layout/base/AccessibleCaretManager.h index d0814f133b93..6aad8822c4d9 100644 --- a/layout/base/AccessibleCaretManager.h +++ b/layout/base/AccessibleCaretManager.h @@ -115,7 +115,10 @@ protected: // appearance to Normal. RespectOldAppearance }; + // Update carets based on current selection status. void UpdateCarets(UpdateCaretsHint aHint = UpdateCaretsHint::Default); + + // Force hiding all carets regardless of the current selection status. void HideCarets(); void UpdateCaretsForCursorMode(UpdateCaretsHint aHint); @@ -182,8 +185,12 @@ protected: // The caret being pressed or dragged. AccessibleCaret* mActiveCaret = nullptr; + // The timer for hiding the caret in cursor mode after timeout behind the + // preference "layout.accessiblecaret.timeout_ms". nsCOMPtr mCaretTimeoutTimer; - CaretMode mCaretMode = CaretMode::None; + + // The caret mode since last update carets. + CaretMode mLastUpdateCaretMode = CaretMode::None; static const int32_t kAutoScrollTimerDelay = 30; };