Skip to content

Jamulus 3.9 screen reader focus issue #2785

Closed

Description

@BlindRyan

Problem: when arrowing through the list of servers, it is no longer possible to press right arrow, and move over in the table to hear other aspects of that server, such as the delay time, location, etc.

In version 3.8 (accessible, when we arrow to a user name, and then ask Windows for the UIA object with focus, we obtain the object that contains the server name as the .name field.
Pressing right arrow, focus moves to the next UIA object, which contains the response time.

However, in 3.9, also position on a server name in the list, what we get when we ask for the UIA object with focus is actually the parent of that server name object, and seems to relate more to the list in general. Focus is not reported as being on that particular server.
Pressing right arrow, focus does not appear to move at all.

So, the root problem is that we are now getting the wrong object, and that object does not change as you arrow left and right.

Activity

  1. ann0see commented on Aug 16, 2022

    @ann0see
    Member

    Thanks for your report. I think @chigkim should be able to help out with accessibility related problems.

  2. chigkim commented on Aug 16, 2022

    @chigkim
    Contributor

    It looks like QT6 fixed so that VoiceOver on Mac now can at least navigate QTreeWidgetItems in QT6 (not each column though), but maybe it broke in windows...
    I'm not sure what we can do until QT fixes QTreeWidgetItems?

    As a futile attempt, I tried to set accessible name before the line "// update number of clients text" in connectdlg.cpp.
    lvwServers -> itemWidget ( pCurListViewItem, 1 ) -> setAccessibleName ( pCurListViewItem -> text ( 1 ) );
    However, I get zsh segmentation fault even before GUI opens.
    On my accessible build on Mac, I got around it by making each column as a QPushButton, but this of course changes UI.

    for ( int i = 0; i < lvwServers->columnCount(); i++ )
    {
    	lvwServers->setItemWidget ( pNewListViewItem, i, new QPushButton ( pNewListViewItem->text ( i ) ) );
    }
    

    @ann0see, do you have any suggestion?

  3. BlindRyan commented on Aug 16, 2022

    @BlindRyan
    Author
  4. added this to the Release 3.9.1 milestone on Aug 16, 2022
  5. hoffie commented on Aug 16, 2022

    @hoffie
    Member

    It looks like QT6 fixed so that VoiceOver on Mac now can at least navigate QTreeWidgetItems in QT6 (not each column though), but maybe it broke in windows...

    The official 3.9.0 build is still on Qt 5.15 though, so this should not be a cause for regression, unless the accessibility Windows build has moved to Qt6 already?

    On my accessible build on Mac, I got around it by making each column as a QPushButton, but this of course changes UI.

    I haven't looked at it, but it sounds like this would not be something which could be integrated by default, but maybe it could be hidden under some general accessibility/screen-reader-friendlyness setting?

    I'm still wondering where the change in behavior could be coming from as I don't see any relevant changes between 3.8.2 and 3.9.0 in the connect dialog at all.

    @BlindRyan Can you confirm again that 3.8.2 still works as desired? Just to rule out any other, non-Jamulus-related changes on the Windows/screen reader side of things.

    @chigkim Does your 3.9.0 accessibility build maybe lack some optimization which 3.8.2 had?

  6. BlindRyan commented on Aug 16, 2022

    @BlindRyan
    Author
  7. chigkim commented on Aug 16, 2022

    @chigkim
    Contributor
  8. BlindRyan commented on Aug 16, 2022

    @BlindRyan
    Author
  9. hoffie commented on Aug 16, 2022

    @hoffie
    Member

    I stopped making a special accessible build for Windows, because all my accessibility fixes were merged into the main

    Ah, cool. How did you build your artifacts until 3.8.2? Was it using the same Github infrastructure as in our upstream project? If not, how? Maybe there is another difference.

    which QT version do 3.8 and 3.9 use? 5.15.x(?)

    Mac: 3.8: 5.15.2, 3.9: 6.3.1
    Win: 3.8: 5.15.2, 3.9: 5.15.2

    Doing a Windows Qt6 build should be simple though. We mainly didn't do it as support for "older" Windows versions is somewhat unclear, see #2300.

  10. chigkim commented on Aug 16, 2022

    @chigkim
    Contributor
  11. BlindRyan commented on Aug 16, 2022

    @BlindRyan
    Author
  12. BlindRyan commented on Aug 16, 2022

    @BlindRyan
    Author
  13. chigkim commented on Aug 16, 2022

    @chigkim
    Contributor

    I tested 3.9 with NVDA and Jaws.
    Here's what you can do.
    Server list is a tree view, so when you press right arrow, it expands the selected server, and reveals users on them, and when you press left arrow, it collapses and hide the users.
    Things like ping time, number of users, location are not supposed to be keyboard focusable. At least I don't think.
    However, in NVDA, once you select a server with up/down, you can use object navigation nvda+shift+right/left to see the number of user, ping time, location.
    On Jaws, you can use touch cursor jaws+shift+; and press right/left arrow to review those information.
    When you're done, go back to pc cursor by pressing jaws+; twice.
    Hope that helps.

  14. BlindRyan commented on Aug 16, 2022

    @BlindRyan
    Author
  15. BlindRyan commented on Aug 24, 2022

    @BlindRyan
    Author
  16. BlindRyan commented on Aug 24, 2022

    @BlindRyan
    Author
  17. chigkim commented on Aug 25, 2022

    @chigkim
    Contributor
  18. BlindRyan commented on Aug 25, 2022

    @BlindRyan
    Author
  19. hoffie commented on Aug 25, 2022

    @hoffie
    Member

    This never worked in main official build. It only worked in my accessible build. For main official build, there isn't really much we can do until QT does something about it. I'm also blind myself using screen readers, so I understand your issue. I guess I can start releasing special build for Windows again, but for official build, using object navigation or touch cursor is best solution we have for now.

    @chigkim Maybe we can add your workaround (I think it changed the UI) to the main build when we put it behind a setting?

  20. chigkim commented on Aug 25, 2022

    @chigkim
    Contributor

    @hoffie, we can technically do that, but it's not really an ideal solution either.
    It'll break the ability to expand/collapse servers to reveal/hide users with arrows since right/left will navigate to name, ping time, number of users, location instead...
    What's even better would be if there's an easy way to make pCurListViewItem as sub class of QWidget.
    Then we can just make accessible name to include those infomations with setAccessibleName(...), and it won't change UI either.
    I saw QTreeWidget has itemWidget() function that returns QWidget. I was hoping to be able to call setAccessibleName on the returned QWidget value.
    However, lvwServers -> itemWidget ( pCurListViewItem, 1 ) -> setAccessibleName ( pCurListViewItem -> text ( 1 ) ); gives me zsh segmentation fault even before GUI opens.

  21. BlindRyan commented on Aug 25, 2022

    @BlindRyan
    Author
  22. chigkim commented on Aug 26, 2022

    @chigkim
    Contributor

    @BlindRyan, to my knowledge, the official build never behaved the way you described . You're talking about the behavior in my custom accessible build.

  23. BlindRyan commented on Aug 26, 2022

    @BlindRyan
    Author
  24. chigkim commented on Aug 26, 2022

    @chigkim
    Contributor
  25. pljones commented on Sep 17, 2022

    @pljones
    Collaborator

    Converting to a discussion as the content seems to have wandered. @chigkim could you please raise an issue making it clear what needs changing. Thanks.

  26. locked and limited conversation to collaborators on Sep 17, 2022
  27. converted this issue into a discussion #2857 on Sep 17, 2022
  28. moved this from Triage to Done in Trackingon Jan 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    • Status
      Done

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions