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

If a textInfo fetches text that isn't obtainable through an objects properties, return true on braille.NVDAObjectHasUsefulText regardless of if it is navigable or not #15605

Closed
Emil-18 opened this issue Oct 11, 2023 · 7 comments · Fixed by #15731
Labels
bug component/braille p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Milestone

Comments

@Emil-18
Copy link
Contributor

Emil-18 commented Oct 11, 2023

Is your feature request related to a problem? Please describe.

As NVDA works now, if a textInfo fetches text that isn't obtainable through an objects properties, such as name, value, description, etc, and the object isn't navigable or use the display model text info, a user who only uses braille can't read this text, because the braille display will only show it if the object is one of these

Describe the solution you'd like

In NVDAObjectHasUsefulText, Make a text info from obj that uses POSITION_ALL, then check if this textInfos text is equal to obj.name or obj.description. If it is not, and the text info isn't NVDAObjectTextInfo, return True

Describe alternatives you've considered

Additional context

For an example where this is a problem, download the SASM edditor, open it and press f1 to open the help document. The object where the focus lands reports as a window, but you can read the contents of the window with the review cursor. There is no other way to read the content, so a braille user can't get the information because NVDA reports the object as window

@seanbudd seanbudd added component/braille p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation. bug labels Oct 16, 2023
@burmancomp
Copy link
Contributor

There is NVDAObject._get__hasNavigableText:

if role in (controlTypes.Role.EDITABLETEXT,controlTypes.Role.TERMINAL,controlTypes.Role.DOCUMENT): # Edit fields, terminals and documents are always navigable return True elif controlTypes.State.EDITABLE in states: # Anything that is specifically editable is navigable return True

If READONLY state would be allowed here or added in suggestion to change NVDAObjectHasUsefulText, would it do what is wanted, or would there be some side effects.

I tested suggested change locally, and if I understood correctly what should be changed, it solved sasm help window problem. It had side effect (braille did not display list item) at least in thunderbird message list but additional limitation like state or role would solve that.

@Emil-18
Copy link
Contributor Author

Emil-18 commented Oct 31, 2023

Did you try to scroll the braille display back in the thunderbird list? I think it then should display the list item. What about adding a setting for it, in case it breaks old behavior?

@burmancomp
Copy link
Contributor

Yes it shows list item when scrolling back (I had not noticed that).

But if adding something like this in your suggestion: if controlTypes.State.READONLY in obj.states:, there is no need to scroll back (at least in thunderbird message list), and sasm help window can be read with braille as well.

More generic question is that should not objects with state of read only be navigable with braille? If so, then where to allow this, in NVDAObjectHasUsefulText or elsewhere like in _get__hasNavigableText? Or is there (likely there is) reason not to allow it?

@Emil-18
Copy link
Contributor Author

Emil-18 commented Nov 1, 2023

I think it works to add it in _get__hasNavigableText. I don't think it should be limited when the content in obj.basicText is not equal to the text retreaved by the text info. What if there is an obscure case where a braille user can't get relevent information because NVDA thinks the object is not navigable? Another possibillity is to add a gesture that makes the current object displayed on the braille display navigable, or display the text info content in a browseable message. In this way, the new functionality will not break old behavior at all

@burmancomp
Copy link
Contributor

There may be side effects if changing _get__hasNavigableText so I would prefer to change NVDAObjectHasUsefulText. There may be side effects also when changing NVDAObjectHasUsefulText but they should be smaller. If there appears other issues in addition to sasm then approach should be reconsidered.

What if I open pull request with NVDAObjectHasUsefulText changes. I am quite sure there is discussion then, and if another approach is better, then it is selected.

@burmancomp
Copy link
Contributor

Or of course if you prefer to open pull request, it is fine and I do nothing.

@Emil-18
Copy link
Contributor Author

Emil-18 commented Nov 1, 2023

It is fine for me if you do it. I am new to github and are not quite shure how to do it yet

seanbudd pushed a commit that referenced this issue Nov 7, 2023
fixes #15605

Summary of the issue:
Although object contains useful text, and it is navigable with review cursor, all these objects are not handled as navigable objects in braille.

Description of user facing changes
Users who use merely braille can read content of more objects.

Description of development approach
Modified braille.NVDAObjectHasUsefulText function.
@nvaccessAuto nvaccessAuto added this to the 2024.1 milestone Nov 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug component/braille p3 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