Skip to content

[Excel- Add @mention]: Screen Reader Users are not Notified when Search Suggestions Appear after Typing "@" in the comment #13764

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
msftedad opened this issue Jun 2, 2022 · 3 comments · Fixed by #14222
Assignees
Labels
p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Milestone

Comments

@msftedad
Copy link

msftedad commented Jun 2, 2022

Untitled

Steps to reproduce:

Step 1. Turn on NVDA.
Step 2. Open the Excel document.
Step 3. Navigate to 'Comments' by using 'Ctrl+F6', 'Tab' & 'Right/Left' arrow keys.
Step 4: Press Enter key to activate the Comment button.
Step 5: Navigate to any Comment & activate it.
Step 6: Navigate to '@mention or reply,' edit field, start typing "@" and observe the issue.

Actual behavior:

NVDA is not announcing search suggestions are available after typing some characters in '@mention or reply,' edit field and while navigating on search results NVDA just announcing as "N" and it's not announcing the username and user mail ID.

Expected behavior:

For better screen reader user experience NVDA should announce the Serach results information, so that user can select the desired person and send the comment easily.
For example, NVDA should announces "10 Search suggestions available" and while navigating those results NVDA should announce the user information like name of the person and his mail ID as well.

System configuration

NVDA installed/portable/running from source:

Test Environment:
OS Version: Dev (OS Build 22458.1000)
Application Version: 2111 (Build 14606.20000) (Dogfood) (InnerRing)
Application: Excel
Screen Reader: NVDA

NVDA version:

2021.3.5

Windows version:

OS Version: Dev (OS Build 22458.1000)

Name and version of other software in use when reproducing the issue:

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

Have you tried any other versions of NVDA? If so, please report their behaviors.

If NVDA add-ons are disabled, is your problem still occurring?

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

@msftedad msftedad changed the title Screen reader users are not notified when search suggestions appear after typing "@" in the comment edit box. [Excel- Add @mention]: Screen Reader Users are not Notified when Search Suggestions Appear after Typing "@" in the comment [Excel- Add @mention]: Screen Reader Users are not Notified when Search Suggestions Appear after Typing "@" in the comment Jun 2, 2022
@michaelDCurran michaelDCurran self-assigned this Sep 19, 2022
@michaelDCurran michaelDCurran added triaged Has been triaged, issue is waiting for implementation. p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority labels Sep 19, 2022
@michaelDCurran
Copy link
Member

Technical info:
The edit field:

  • has a UIA automationId of cardEditor_5_18e12c3c-2f8c-4385-b051-bd809efbd8ca.
  • does correctly expose the controllerFor property pointing to the container holding the suggestions.
  • correctly fires the controllerFor propertyChange event
  • We could map it to the SearchField UIA NVDAObject if automationId startswith cardEditor_
  • This would at very least give us the suggestion open and close sounds.

suggestion list item:

  • Does correctly fire the elementSelected event
  • Does not have a valid selectionContainer, however, its parent is exposed in the edit field's controllerFor list.
  • Does not provide any useful UIA className or automationId to easily identify it. These are all just NetUIElements.

I think it may be high time we start to consider a much more generic approach to supporting this suggestion pattern. Not only because in this instance suitable classNames / automationIds are not present, but also this controllerFor containing the parent/selectionContainer of a selected element is becoming very common, including in Chromium's UI and other web ARIA implementations.

I'm imagining we may want to move the functionality of SearchField onto behaviours.EditableText, so that any editableText NVDAObject that starts / stops exposing controllerfor will get the suggestion open/close sounds, and move the functionality of SuggestionListItem on to the base NVDAObject, so that if selected, and its parent/container matches controllerfor of the focus, it will be reported appropriately. Avoiding further need for hardcoding specific classNames etc.
Note that I'm suggesting the base NVDAObject here and not say a generic ListItem NVDAObject, as there are cases, such as in the Chrome UI that select things other than listItems. E.g. the buttons like "Switch to tab".
What do you think about this @josephsl ? As you have maintained much of the suggestions code in the past.
If we think this goes too far for now, we can instead just do this for UIA, and specifically map SearchField to cardEditor_ and add SuggestionListItem functionality to ListItem UIA NVDAObject, but specifically checking that parent and or selectionContainer are in focus.controllerfor. And we can leave SuggestionListItem as is.

@josephsl
Copy link
Collaborator

josephsl commented Sep 19, 2022 via email

@josephsl
Copy link
Collaborator

josephsl commented Sep 19, 2022 via email

michaelDCurran added a commit that referenced this issue Oct 17, 2022
…mment mentions and Google Chrome location bar suggestions (#14222)

Fixes #13772
Fixes #13764
Fixes #13522

Summary of the issue:
• When starting to type an @mention in a Microsoft Excel comment, NVDA does not report available suggestions when arrowing through them. ( [Excel- Add @mention]: Screen Reader Users are not Notified when Search Suggestions Appear after Typing "@" in the comment  #13764)
• When typing in the Google Chrome location bar, NVDA does not report rich information for each suggestion, nor does it report when a suggestions control (switch to tb, remove suggestion) is selected. (Chrome: Omnibox: User is not notified of useful information in the first item of keyword search #13522)
• As a developer, adding support for new suggestion scenarios is tedious as specific mappings must be always made.

Description of user facing changes
• NVDA will now report the selected suggestion when arrowing through suggestions when typing an @mention in a Microsoft Excel comment.
• NVDA will report the selected suggestion or suggestion control (switch to tab, remove suggestion) in the Google Chrome location bar.

Description of development approach
Make support for suggestions on editable text fields more generic, allowing it to be supported in more places without having to specifically choose particular overlay classes.

This adds support for reporting @mention suggestions in Microsoft Excel comments, and reporting of suggestions and related controls in the Google Chrome location bar.

Specific changes:
* IAccessible NVDAObject: implement the controllerFor property making use of IAccessible2 relations
* NVDAObject: add an isDescendantOf method which should return True if the object this method is called on is a descendant of the given obj argument. The base method raises NotImplementedError. Efficient implementations for UIA and Ia2Web have been provided.
* Implement event_selection on the base NVDAObject, which reports the object being selected, if the current focus is controlling an ancestor of the selected object. This replaces SuggestionListItem UIA NVDAObject's event_UIA_elementSelected logic. Now it is more generic, and works purely on tree topology, rather than checking the name and appModule etc.
* Remove event_selection implementation from IAccessible NvDAObject as the base handles this now.
* Add an event_controllerForchange method to the base NVDAObject which does nothing.
* UIA NVDAObject: implement event_UIA_controllerforchange to directly call event_controllerforchange, allowing for more generic code, but still backwards compatibility for subclasses to still override event_UIA_controllerforchange if they need to.
* behaviours:
	* Rename EditableTextWithSuggestions to InputFieldWithSuggestions and inherit directly from NVDAObject making this class more generic.
	* InputFieldWithSuggestions class: implement event_controllerForChange which will fire the suggestionsOpened and suggestionsClosed events based on whether there are objects in the controllerfor list. this code was taken from SearchField UIA NVDAObject's event_UIA_controllerforchange.
	* Rename EditableText to EditabletextBase
	* Add a replacement EditableTextWithSuggestions class that inherits from both InputFieldWithSuggestions and EditableTextBase
	* Add a replacement EditableText class which inherits from EditableTextwithSuggestions and EditableTextBase.
	Essentially all this builds suggestion support into EditableText, but keeps the EditableTextWithSuggestionsClass specifically available for compatibility.
@nvaccessAuto nvaccessAuto added this to the 2023.1 milestone Oct 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Projects
None yet
4 participants