Closed
Bug 377891
Opened 17 years ago
Closed 17 years ago
Extra a11y cache invalidations when user selects new combobox option
Categories
(Core :: Disability Access APIs, defect)
Core
Disability Access APIs
Tracking
()
RESOLVED
DUPLICATE
of bug 371394
People
(Reporter: aaronlev, Assigned: aaronlev)
References
(Blocks 1 open bug)
Details
(Keywords: access)
Spun off from bug 376468. We shouldn't be invalidating the combobox list accessible just because the text field is changing. nsHTMLComboboxAccessible::InvalidateChildren(this = 0x930ac40), line 956 in "nsHTMLSelectAccessible.cpp" nsDocAccessible::InvalidateCacheSubtree(this = 0x8fca358, aChild = 0x9313fe8, aChangeEventType = 5U), line 1414 in "nsDocAccessible.cpp" nsDocAccessible::CharacterDataChanged(this = 0x8fca358, aDocument = 0x8da75f8, aContent = 0x9313fe8, aInfo = 0x8046334), line 1107 in "nsDocAccessible.cpp" nsBindingManager::CharacterDataChanged(this = 0x8ff1740, aDocument = 0x8da75f8, aContent = 0x9313fe8, aInfo = 0x8046334), line 1162 in "nsBindingManager.cpp" nsNodeUtils::CharacterDataChanged(aContent = 0x9313fe8, aInfo = 0x8046334), line 89 in "nsNodeUtils.cpp" nsGenericDOMDataNode::SetTextInternal(this = 0x9313fe8, aOffset = 0, aCount = 2U, aBuffer = 0x9310a00, aLength = 3U, aNotify = 1), line 483 in "nsGenericDOMDataNode.cpp" nsGenericDOMDataNode::SetText(this = 0x9313fe8, aBuffer = 0x9310a00, aLength = 3U, aNotify = 1), line 893 in "nsGenericDOMDataNode.cpp" nsIContent::SetText(this = 0x9313fe8, aStr = CLASS, aNotify = 1), line 425 in "nsIContent.h" nsComboboxControlFrame::ActuallyDisplayText(this = 0x931540c, aNotify = 1), line 822 in "nsComboboxControlFrame.cpp" nsComboboxControlFrame::HandleRedisplayTextEvent(this = 0x931540c), line 804 in "nsComboboxControlFrame.cpp" nsComboboxControlFrame::RedisplayTextEvent::Run(this = 0x924b5a0), line 99 in "nsComboboxControlFrame.cpp"
Assignee | ||
Comment 1•17 years ago
|
||
In principle this might not be hurting anything -- even perf may not really be affected. We do it because as text changes, the child accessibles for it may need to change. For example, when going from 0 to some chars, or vice-versa, it changes whether a textfield will need an accessible child. But if going from say, 2 to 3 chars in a textfield, it's not really necessary to invalidate. Comboboxes don't have have an accessible text child anymore, so they really don't need to invalidate. Is it worth finding all the CharacterDataChanged() cases and deciding when to invalidate and when not to?
We have "#ifdef COMBO_BOX_WITH_THREE_CHILDREN" in nsHTMLSelectAccessible.cpp. With that macro define, combo box accessible would have a child of text field accessible. Although I'm not sure whether that macro has ever been used, it may need the CharacterDataChanged() things. I think maybe we can just live with the CharacterDataChanged() things until we get problem on it.
Assignee | ||
Comment 3•17 years ago
|
||
nsDocAccessible::CharacterDataModified() should try to fire fire text change events instead of REORDER. It could use aInfo to create the event with this info: nsCOMPtr<nsIAccessibleTextChangeEvent> event = new nsAccTextChangeEvent(this, start, length, isInserted); Often it's a replace, not just an addition or removal. In that case I think we need to fire both a removal and insertion.
Assignee | ||
Updated•17 years ago
|
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•