nvaccess / nvda

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

Use UIA for syslistview32 #8328

Closed LeonarddeR closed 5 years ago

LeonarddeR commented 6 years ago

The current syslistview32 implementation of NVDA relies on a whole bunch of custom code which seems to cause issues in some situations. See for example:

it turns out that at least under Windows 10, every syslistview32 list item exposes the several columns as children of list items when using UIA, along with proper mappings to their column headers. Using UIA would at least fix #8268 and might be a more solid fix for #8175 than #8190 provides.

dkager commented 6 years ago

This sounds really nice to have. :)

LeonarddeR commented 6 years ago

See also this article about what standard controls are supported by UI Automation.

LeonarddeR commented 6 years ago

syslistview32 has support for grouped items. Does anyone know a case in the wild where this support can be tested?

Adriani90 commented 6 years ago

in every MS Office application. Especially in MS Access.

Adriani90 commented 6 years ago

or in MS Powerpoint where you can group elements on a slide.

Adriani90 commented 6 years ago

Syslistview32 with UIA supports Datagrit and Lists. It could contribute to solve #7950

Adriani90 commented 6 years ago

SysTabcontrol32 could solve #7758

LeonarddeR commented 6 years ago

I have a working prototype in https://github.com/babbagecom/nvda/tree/slvUIA

cc @josephsl

LeonarddeR commented 6 years ago

@Adriani90 commented on 28 jun. 2018 22:04 CEST:

in every MS Office application. Especially in MS Access.

Are you sure this is not UIA?

LeonarddeR commented 6 years ago

@Adriani90 commented on 28 jun. 2018 22:19 CEST:

SysTabcontrol32 could solve #7758

I'm afraid not, as there's another control used there.

LeonarddeR commented 6 years ago

I've noticed major performance hickups when using UIA syslistview32 in the services management console. Unless this is something that can be tracked down, I guess we'll at least stick to MSAA by default.

Adriani90 commented 6 years ago

MS Access is definitely IAccessible, have checked in the python console.

josephsl commented 5 years ago

Hi,

Six months later...

For anyone wishing to test this, please try with Windows 10 Version 1809, or if not, try Version 1803 with NVDA 2018.4 or later (or latest alpha, if you want). I deal with SysListView32 objects in one of my add-ons and will do some "good UIA window" testing to see if it helps somewhat.

Thanks.

josephsl commented 5 years ago

Hi,

Test performed with Leonard's branch merged with master (fixing conflict in Outlook app module). I used Task Manager and Services.msc on Windows 10 Version 1809 (build 17763).

Result: I can confirm Leonard's observation: still noticing performance issues with UIA implementation. This is most noticeable in Task Manager where there is a huge delay when navigating entries in Details tab.

Thanks.

LeonarddeR commented 5 years ago

I think the overall conclusion of this issue is that UIA for SysListView32 is pretty slow. Closing for now, we can always reopen if desired.