Skip to content
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

Disabled (unavailable) GUI items should not be skipped during object navigation #15477

Closed
CyrilleB79 opened this issue Sep 20, 2023 · 7 comments · Fixed by #15785
Closed

Disabled (unavailable) GUI items should not be skipped during object navigation #15477

CyrilleB79 opened this issue Sep 20, 2023 · 7 comments · Fixed by #15785
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

@CyrilleB79
Copy link
Collaborator

Steps to reproduce:

  1. Open braille settings
  2. Uncheck braille cursor
  3. Move navigator to next object

Actual behavior:

Nav object moves to "Show messages" checkbox which is the next GUI item that is not greyed out.

Expected behavior:

Nav object should move to the next GUI object ("Blinking cursor"), whether it is greyed out or not should not matter.

Greyed items are visible to sighted users. So unless there is a good reason, blind people should be able to see them too. Greyed items convey meaning in a GUI and not being able to see them causes people to miss information conveyed by the GUI.

Taking again the example of braille panel:
If a user has unchecked show cursor by mistake, he may not find "Blinking cursor" option while tabbing in the dialog. Using an object navigation that does not skip greyed items would allow to see the item and see that it is unavailable.

If however a good reason not to include unavailable GUI items in obj navigation is exhibited, at least they should be included in object navigation with when simple review mode is disabled.

Additional notes

  • With current NVDA it is still possible to set nav object on an unavailable (greyed out) GUI item; for this, put the mouse cursor on the unavailable object and route nav obj to mouse cursor.
  • Another way to see unavailable GUI item is to use screen review mode instead of object review mode and use review commands.
  • The issue also occurs elsewhere. For exemple in folder property dialogs of windows Explorer, for standard Windows folders such as download, the name is greyed out. It cannot be reached with object navigation commands, no matter if simple review mode is enabled or disabled.
  • On the opposite, there are other places where the issue does not occur with simple review mode disabled. Example in standard Windows application windows (e.g. Notepad): press alt+space and use object navigation to move in the menu; "Restore" is reachable with simple review mode off, but not with simple review mode on.

NVDA logs, crash dumps and other attachments:

N/A

System configuration

NVDA installed/portable/running from source:

installed

NVDA version:

2023.3beta2

Windows version:

Windows 10 21H2 (AMD64) build 19044.3324

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

N/A

Other information about your system:

N/A

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.

NVDA 2023.2 and all many other older versions had the same behaviour; not retested it just now however.

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?

Not tested now but this issue has always been there in spite of NVDA updates.

@CyrilleB79 CyrilleB79 changed the title Disabled GUI items should not be skipped during object navigation Disabled (unavailable) GUI items should not be skipped during object navigation Sep 20, 2023
@seanbudd
Copy link
Member

as far as I can tell this is an unavoidable implementation issue with native Windows form components, which wxWidgets relies on. Windows prevents focus by force to disabled form controls.

@CyrilleB79
Copy link
Collaborator Author

as far as I can tell this is an unavoidable implementation issue with native Windows form components, which wxWidgets relies on. Windows prevents focus by force to disabled form controls.

@seanbudd are we sure to understand each other?
My request is about being able to move the navigator object on disabled items, not about moving the focus there.

@seanbudd
Copy link
Member

My mistake. We have code that intentionally skips over these items during object navigation. Does toggling "simple review mode" allow you to workaround this issue?

@CyrilleB79
Copy link
Collaborator Author

No, for the examples given in the initial description these objects are unreachable. As already indicated in the initial description, it does not change anything if simple review mode is enabled or disabled.

In the meantime, I have found that the disabled items of Notepad's context menu (Windows 10) are reachable through object navigation, but only when simple review mode is disabled.

I think that all unavailable objects should be reachable by object navigation when simple review mode is off. The fact that some object are not reachable when simple review is off is a bug IMO.

Additionally, I think that the simple review shouldn't skip unavailable object either, for the reasons I have described in my first comment: although greyed, an unavailable control still conveys meaning in a GUI and the user should be aware of it.

@seanbudd seanbudd added p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation. labels Sep 25, 2023
@CyrilleB79
Copy link
Collaborator Author

@seanbudd, I can see that you have added the "triaged" label, which means that you accept disabled object to be reported during object navigation.

Could you clarify the following questions:

  1. Should disabled objects be reachable also in simple review mode or in both review mode? As written before, my opinion is that it should be reachable in both modes, but I would like to know NV Access opinion.

  2. You write:

We have code that intentionally skips over these items during object navigation.
Are you thinking to isUsableWindow function in NVDAObjects\window\__init__.py? Or/and something else?

  1. I guess that such a modification, that would change the behaviour of .next/.previous methods would be considered API-breaking. Do you confirm this?

@XLTechie
Copy link
Contributor

XLTechie commented Sep 26, 2023 via email

@seanbudd
Copy link
Member

Should disabled objects be reachable also in simple review mode or in both review mode? As written before, my opinion is that it should be reachable in both modes, but I would like to know NV Access opinion.

It should be reachable in both modes.

Are you thinking to isUsableWindow function in NVDAObjects\window_init_.py? Or/and something else?

I'm not sure, I think so. I have not investigated the code. The information stated was provided by Mick.

I guess that such a modification, that would change the behaviour of .next/.previous methods would be considered API-breaking. Do you confirm this?

I'm not sure, I think so. I have not investigated the code.

seanbudd pushed a commit that referenced this issue Nov 26, 2023
Closes #15477

Summary of the issue:
In a GUI, disabled (greyed) items are visible to sighted users. So unless there is a good reason, blind people should be able to see them too. Greyed items convey meaning in a GUI and not being able to see them causes people to miss information conveyed by the GUI.

For example in the new audio panel, if you run NVDA from source (or probably portable), the audio ducking item is greyed out (disabled). Being allowed to find the disabled item informs the user that NVDA has an audio ducking options but that this options can not be enabled.

Unfortunately, disabled controls are ignored during object navigation.

This is also inconsistant with document review mode where disabled objects are not ignored.

Description of user facing changes
During object navigation (complete, simple or flattened), disabled object will not be ignored anymore.

Description of development approach
For presentation type, do not classify objects with state UNAVAILABLE to presType_unavailable.
For windows isUsableWindow does not return False for windows that are not enabled
@nvaccessAuto nvaccessAuto modified the milestone: 2024.1 Nov 26, 2023
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
Development

Successfully merging a pull request may close this issue.

4 participants