Closed Bug 2015380 Opened 8 months ago Closed 8 months ago

Windows 11 Text Cursor Indicator is positioned in message body instead of To: field when composing a new message in Thunderbird

Categories

(Core :: Disability Access APIs, defect)

Desktop
Windows
defect

Tracking

()

RESOLVED FIXED
149 Branch
Tracking Status
firefox-esr140 --- unaffected
firefox147 --- unaffected
firefox148 --- wontfix
firefox149 --- fixed

People

(Reporter: Jamie, Assigned: Jamie)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: regression, Whiteboard: [uiaFastFollow])

Attachments

(2 external files)

Spun off bug 2012252 comment 12.

STR:

  1. Turn on Text Cursor Indicator in Settings.
  2. Compose a new message in Thunderbird.
  3. Observe that the "To:" field is focused.
    • Expected: The Text Cursor Indicator should be positioned in the "To:" field.
    • Actual: The Text Cursor Indicator is positioned in the message body.
  4. Type some text.
    • Result: The Text Cursor Indicator is correctly positioned in the "To:" field.

Set release status flags based on info from the regressing bug 2006816

Previously, this was a lambda, but we will soon need to call it from SelectionManager as well.

Firing a caret event for an Accessible which doesn't have focus confuses clients, who expect that the caret should be related to the focus.
Prior to bug 2006816, this wasn't as bad because even though we fired the caret event on the wrong Accessible, TextLeafPoint::GetCaret still returned the caret from the focused document.
After bug 2006816, we use the cached caret, so the event and the retrieved caret are both (consistently) incorrect.
To fix this:

  1. Make it possible to update the RemoteAccessible cache for the caret via IPDL without firing a caret event.
  2. When the caret moves, don't fire a caret event unless it's within the focused document.
  3. However, the caret event won't be fired again when the document eventually gets focused, so we still send an IPDL message to update the cached caret in the RemoteAccessible tree.
  4. In TextLeafPoint::GetCaret, only use the cached caret if the cached caret Accessible is within the same document as the origin Accessible.
Pushed by jteh@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/5d5c20208b8c https://hg.mozilla.org/integration/autoland/rev/08bf13d30134 part 1: Refactor code to get the caret rect for IPC events into a function which can be called from elsewhere. r=eeejay https://github.com/mozilla-firefox/firefox/commit/4d33b2b2c24b https://hg.mozilla.org/integration/autoland/rev/f39bae80701f part 2: Don't fire a caret event when the caret moves within a document which isn't focused. r=eeejay
Status: NEW → RESOLVED
Closed: 8 months ago
Resolution: --- → FIXED
Target Milestone: --- → 149 Branch

The patch landed in nightly and beta is affected.
:Jamie, is this bug important enough to require an uplift?

For more information, please visit BugBot documentation.

Flags: needinfo?(jteh)

Caret stuff is obscure, difficult to get right and is historically an area that tends to regress easily. Too risky for beta.

Flags: needinfo?(jteh)
QA Whiteboard: [qa-triage-done-c150/b149][qa-ver-needed-c150/b149]
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: