nvaccess/nvda

Navigate to header control items of win32 list controls in report mode

Closed this issue · 1 comments

Hello everyone,

Detailed description of the issue

I would like to know how an nvda user is expected to navigate from a list view item in a win32 list control to the header control or individual header control item in order to be able to execute the Invoke Pattern or the MSAA default action.

Why are the other templates not appropriate in this case?

I don't know if this is a bug, a feature request or odd behaviour of the win32 list control.

Have you asked for advice on how to report this issue via a community discussion? If so, please link to the discussion

No.

Steps to reproduce or illustrate the issue (if applicable)

Any app using a win32 list control in report mode should repro the problem: Select a row in the list control, then press NVDA+shift+cursorup this will navigate to the list control itself. Now press NVDA+shift+cursordown which will navigate to the first child which is the first row in the list control but not the header control. On Windows 11, the list control in explorer works this way, but I do not seem to be able to do this with standard win32 list controls.

Expected outcome or behaviour (if applicable)

There should be a way to navigate to the header control of a list control. Maybe there is one, but I am too dumb.

Screenshots, logs, and other attachments (if applicable)

none, if necessary, I can provide things

System configuration or software environment (if applicable)

Windows 11 running latest NVDA as of now.

Additional information (if applicable)

I found some interesting information in the MS doc "List-View Control (MSAA UI Element Reference)" regarding list controls in report mode: "Microsoft Active Accessibility does not support using the accNavigate method to navigate to the header control within a list-view control that is in Details view. However, clients use the AccessibleObjectFromPoint function to get to the header control."

Is there any relation between this quote and my problem?

Thanks in advance,

--
Stefan

One example where this behaviour can be reproduced is the syslistview32 in the services manager (services.msc) built into the operating system. If your start element is any list control item, pressing NVDA-Shift-cursorup navigates to the list control itself and a subsequent NVDA-Shift-cursordown will navigate to the first list control item instead of the header control. In the case of services.msc, the developers did something additional, they do not let the header control expose any patterns, so there is no default action and no InvokePattern. Which leads me to a side question: How are blind users expected to sort any column in services.msc's list control?