nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.08k stars 625 forks source link

NVDA does not announce cell content in DevExpress WPF GridControl during keyboard navigation #15045

Open DmitryRomenskiy opened 1 year ago

DmitryRomenskiy commented 1 year ago

Hello,

My name is Dima and I'm a support engineer at DevExpress. I'm here on behalf of our WPF team. We recently received a report from one of our customers about NVDA usage with our components. Essentially, NVDA does not narrate cell content in our grid when we navigate with arrow keys in the same row.

Our research showed that this happens because the AutomationEvents.AutomationFocusChanged event is raised twice - from our code and from System.Windows.Input.KeyboardDevice.ChangeFocus. We have some thoughts about possible workarounds, but we'd like to ensure that there is no issue on your side first. Could you please take a look at this usage scenario and let us know if everything works as intended?

Thank you in advance.

Steps to reproduce:

Run NVDA with DevExpress WPF GridControl and use left and right keyboard keys to change cell focus. The attached archive GridWithNVDA.zip contains a simple sample with GridControl. Use the following NuGet feed to restore packages: https://nuget.devexpress.com/6NH5hocKTOodulqXCDNQRd2ki8cfQOTDAT5lNrpTFNK3aPUwfE/api. It will be active for 30 days. See Install DevExpress Controls Using NuGet Packages.

Actual behavior:

Cell content is not announced

Expected behavior:

Cell content is announced

NVDA logs, crash dumps and other attachments:

The log is full of those:

ERROR - eventHandler.executeEvent (15:46:16.388) - MainThread (8376):
error executing event: gainFocus on <NVDAObjects.UIA.UIA object at 0x00BECED0> with extra args of {}
Traceback (most recent call last):
  File "eventHandler.pyc", line 300, in executeEvent
  File "eventHandler.pyc", line 101, in __init__
  File "eventHandler.pyc", line 110, in next
  File "NVDAObjects\UIA\__init__.pyc", line 1337, in event_gainFocus
  File "NVDAObjects\__init__.pyc", line 1278, in event_gainFocus
  File "NVDAObjects\__init__.pyc", line 1129, in reportFocus
  File "speech\speech.pyc", line 628, in speakObject
  File "speech\speech.pyc", line 668, in getObjectSpeech
  File "speech\speech.pyc", line 581, in getObjectPropertiesSpeech
  File "baseObject.pyc", line 62, in __get__
  File "baseObject.pyc", line 168, in _getPropertyViaCache
  File "NVDAObjects\UIA\__init__.pyc", line 1435, in _get_selectionContainer
AttributeError: 'NoneType' object has no attribute 'UIASelectionPattern2'

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

2023.1.0.27913

Windows version:

22631.1900

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

DevExpress WPF suite v23.1.3

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

Yes

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

No

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

Yes

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

Yes

DmitryRomenskiy commented 1 year ago

Just a follow-up. Windows Narrator works as expected.

Adriani90 commented 2 months ago

I think when it comes to framework induced controls such as WPF, QT, etc. we should reconsider the priorities here. improving the support for such frameworks will make lots of applications more accessible on the fly, without having to make adjustments for every application in particular. So frameworks such as WPF should be handled with as much priority as Aria WCAG standards in my view.