jamulussoftware / jamulus

Jamulus enables musicians to perform real-time jam sessions over the internet.
https://jamulus.io
Other
1k stars 223 forks source link

Server List Is Not Accessible With Screen Reader on Mac #490

Open chigkim opened 4 years ago

chigkim commented 4 years ago

Describe the bug

Server List Is Not Accessible With Screen Reader on Mac

To Reproduce

  1. Open server list to join.
  2. Turn on VoiceOver with command+f5 (or command+triple click power on newer mac with with touch bar)
  3. Try navigating the list with tab and arrows None of the QTreeWidgetItems are not announced as being selected. However, if you move the mouse cursor to one of the item and press control+option+f5, you'll hear what's under the mouse. It seems like QTreeWidgetItems are accessible, but they don't appear as children of QTreeWidget to accessibility API.

Expected behavior

QTreeWidgetItems should be announced

Screenshots

/

Operating system

macOS

Version of Jamulus

?

Additional context

Probably fixed here: https://chigkim.github.io/jamulus/

corrados commented 4 years ago

However, if you move the mouse cursor to one of the item and press control+option+f5, you'll hear what's under the mouse.

I have tried this but it does not work on my Mac. Maybe it is an issue of my old MacOS.

It seems like QTreeWidgetItems are accessible, but they don't appear as children of QTreeWidget to accessibility API.

That sounds to me like a but in Qt since the QTreeWidgetItems are always children of QTreeWidget, right? Or is there a possibility to add QTreeWidgetItems in a QTreeWidget if they are not children?

chigkim commented 4 years ago

Sorry I'm not sure why control+option+f5 didn't work for you. When a sighted person manually move my mouse and puts it on one of the server, and if I press control+option+f5, VO announced the item for me. So far, my dirty hack around was to add a each item as a button to the tree. This has its own problem where you can't expand with right arrow to look at the users, but at least people can look at the servers and join one. Inside CConnectDlg::SetServerList

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

Inside CConnectDlg::SetPingTimeAndNumClientsResult

dynamic_cast<QPushButton*>(lvwServers->itemWidget(pCurListViewItem, 
1))->setText(pCurListViewItem->text(1));
dynamic_cast<QPushButton*>(lvwServers->itemWidget(pCurListViewItem, 
2))->setText(pCurListViewItem->text(2));
corrados commented 4 years ago

I just tried it out with the screen reader which is built-in the Windows 10 operating system. That screen reader can read all list items without any problem. You can even let it read the connected musicians names.

So I assume that we have an issue which is Qt and Mac related. I don't think I can fix anything in the Jamulus software to get it working.

I see that you have implemented a workaround. But unfortunately, this code I cannot use in the official Jamulus version.

chigkim commented 4 years ago

Thanks for the info. Yea I was pretty sure that hack would break UI. I'll look more into it. For now, I'll incorporate the server list hack to my own repository and distribute to screen reader users using Mac. FYI, we created a Jamulus group for screen reader users on whatsapp yesterday, and we already have 25 people, mostly mac users.

ann0see commented 2 years ago

@chigkim once we're moving to Qt6 (https://github.com/hoffie/jamulus/tree/Qt6-hoffie-cleanup) could you please test if anything gets better?

chigkim commented 2 years ago

Sure, please ping me when the migration completes.

ann0see commented 2 years ago

You should be able to have a look at the PR‘s by @hoffie tomorrow/at the weekend

hoffie commented 2 years ago

Sure, please ping me when the migration completes.

Hard to tell when the full switch completes, but you can already try builds from PR #2300 here: All binaries (or: Direct link for Mac). Only Windows (64bit) and Mac (non-legacy) have changed. If you are using any other platform, then these binaries are unlikely to improve things for you yet.

Note: This is completely untested. Please report back if you see any breakage or -- hopefully -- improvements with regards to screen reader compatibility.

chigkim commented 2 years ago

Unfortunately the server list is still broken. I could be wrong, but I don't think qt6 addressed QTreeWidget and QTreeWidgetItems for Mac.

ann0see commented 2 years ago

That’s not good. Is it a known Qt bug or can Jamulus work around it - in a compatible way of course?

ann0see commented 2 years ago

If it’s a Qt Bug, maybe an issue can be raised on their side

ann0see commented 2 years ago

Hi, Sorry for the maintenance noise here. I’m just into triaging issues. I've just updated the issue description to fit into the template. Hopefully some day this issue will be fixed.