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

Backport "Merge pull request #5984 from Hartmnt/feat_a11y" to 1.5.x #6378

Merged
merged 28 commits into from
Apr 4, 2024

Conversation

Krzmbrzl
Copy link
Member

@Krzmbrzl Krzmbrzl commented Apr 4, 2024

Backport

This will backport the following commits from master to 1.5.x:

Questions ?

Please refer to the Backport tool documentation

Hartmnt added 28 commits April 4, 2024 14:12
…hat bar.

The autocomplete function for usernames introduced in 56f5f97
overwrites the forward-TAB accessibility behaviour. This results in
screen reader users being stuck inside the chat bar having to shift-TAB
or "back TAB" out to reach other user interface modules.

This commit changes the TAB autocomplete behaviour requiring an explicit
"@" in the chatbar for it to trigger. Otherwise it behaves as normal TAB.

See #5811

(cherry picked from commit c996ca9)
…io buttons in AudioWizard

Some or all screen readers are not associating the large description text
for the radio buttons in the quality page of the AudioWizard.

This commit explicitly sets the label content as the accessibleDescription
for the radio buttons.

(cherry picked from commit caa1490)
…ttons in wizards

For some or all screen readers the "Next >" and "Back <" buttons
in wizards read out the ">" and "<" symbols which is rather annoying.

This commit explicitly sets the accessible name attribute such that
the buttons are read without the symbols.

(cherry picked from commit 9d281c0)
…alog

When clicking the "Start" button in the voice recorder dialog,
some random element receives focus automatically. Some or all
screen readers start reading the disabled options.

This commit automatically focuses the "Stop" button in the voice
recorder dialog when "Start" is clicked.

(cherry picked from commit f030543)
Previously, screen readers would just read out the string of any selected
item in the tree.

With this new commit, the accessibleText and accessibleDescription are
set such that it is clear whether an item is a channel or a user and
which properties are set for both.

Fixes #2292

(cherry picked from commit 7a9452d)
Previously, there was no way to know for sure, if the currently selected
user and channel tree was being filtered. (in a screen reader context)

This commit switches the accessibleName depending on the channel filter
state.

(cherry picked from commit be7c328)
Previously, the TAB focus order and focus handling in
the connection dialog was barely working.

This commit adds a manual TAB order and focus policies to
improve navigation.

(cherry picked from commit 6a81d82)
…rtWizard on page change

Previously, none of the description text of the wizard pages were read
by screen readers. (especially Orca)

To fix this, this commit will focus the dialog itself when
the page changes. This makes the screen reader read the current
page information. It also implements a new function that
finds the next focusable child and sets that in the focus
chain of the wizard as well.

(cherry picked from commit 3474d63)
The certificate wizard shows boxes with certificate info.
These boxes are created by using labels in a QGroupBox.
However, this information is not easily readable using a
screen reader (especially Orca).

This commit introduces the AccessibleGroupBox class
which aims to solve that by dynamically setting the
accessible description using layout information of
the labels inside the box.

Fixes #1337

(cherry picked from commit 6685fbf)
…sible

Using the new AccessibleGroupBox make the information inside
the server and user information dialogs accessible for
screen readers.

Fixes #1337

(cherry picked from commit 3b6acda)
The search dialog is hard to find using the keyboard
and a screen reader.

This commit adds the search dialog action to the
server context menu.

(cherry picked from commit 057932a)
This commit switches the label in the shortcut dialog from
"Add" to "Listening to input" when the button is pressed.
This is supposed to indicate to screen readers that
the dialog is now in a different state, which is actually
listening for new key presses.

(cherry picked from commit ca29279)
This commit fixes keyboard navigation for the settings
dialog.

Fixes #1337

(cherry picked from commit 0058453)
Previously, the tab order of the elements in the
settings pages were all over the place.

This commit forces a sensible order.

(cherry picked from commit cd3b921)
Some screen readers (notably Orca) are either not capable
of reading semantic values for slides, or Qt prevents them
from doing so.
Sadly, the raw value of a slider e.g. in case of the voice activity
threshsold 0-32767 is pretty much entirely useless for a screen
reader user.

This commit introduces the concept of a semantic slider, which
has a separate accessible text for providing more sensible values
as well as units while still being able to pass the raw slider value
to underlying code.

For screen readers such as Orca, it is a bit hacky as it prepends
the semantic value of the slider to the accessibleName. (Orca does
not read the provided value object) But other than
that, this should work very well for almost all circumstances.

(cherry picked from commit ff4a676)
Qt offers a feature called buddy labels. With that certain
UI elements can have a label, which represents the UI element
in a textual way. This is very important for screen readers
as they otherwise might not read the correct for any given UI element.
Adding buddies is as simple as using the "Edit buddy" dialog
in the Qt editor.

This commit sweeps through (almost) all UI elements and
applies the correct buddies where applicable.

(cherry picked from commit 7e049eb)
…able

In c73f967 accessibility names and descriptions were added to Mumble
but they were placed in code.

This commit moves all those texts into the respective .ui file where
applicable. If the accessible name is changed or calculated at runtime,
it obviously needs to still be defined in the source code.

(cherry picked from commit 8970afe)
A lot of accessible names or descriptions were either missing,
wrong or misleading.

This commit tries to unify and improve all accessible names
and descriptions

Fixes #1337

(cherry picked from commit bc591b7)
Previously, the accessibility of the inline slider was very
limited due to the cumbersome and lacking system Qt provides.

This commit gently tricks Qt into behaving like a nice
framework in regards to accessibility.

Fixes #6109

(cherry picked from commit ed988e6)
This commit switches the plugin config tree to a new
MultiColumnTreeWidget and makes it keyboard navigatable.
It also makes screen readers read actual column values.

(cherry picked from commit 4bc60e9)
This commit switches the message notification type tree to a new
MultiColumnTreeWidget and makes it keyboard navigatable.
It also makes screen readers read actual column values.

Fixes #2972

(cherry picked from commit 2fc9596)
This commit switches the search result tree to a new
MultiColumnTreeWidget and makes it keyboard navigatable.
It also makes screen readers read actual column values.

(cherry picked from commit 6a68696)
This commit switches the global shortcut tree to a new
MultiColumnTreeWidget and makes it keyboard navigatable.
It also makes screen readers read actual column values.

Fixes #2293

(cherry picked from commit fffcfaa)
This commit changes the menu items and some buttons to
conform to universal [1] standards. This means that:

* Labels are using title case (e.g. "Listen to channel" -> "Listen To Channel")
* Menu items are generally not including the menu title in
the action label (e.g. "Join Channel" -> "Join")
* ALL menu items have non-overlapping access keys (ALT + <access key>, denoted by underline)
* Ellipses ("...") are only used for actions that require further user input,
simply opening another window is not a reason for using an ellipsis.

[1] State of the art as documented by major vendors in the consumer
software industry. For example:
https://learn.microsoft.com/en-us/windows/win32/uxguide/cmd-menus
https://developer.apple.com/design/human-interface-guidelines/menus
https://develop.kde.org/hig/components/navigation/menubar/

(cherry picked from commit cd7b8ef)
Previously, there was no way to move users from channel to channel
using only the keyboard. For accessibility reasons, that was not ideal.

This commit adds a new action to the user context menu allowing
to move the selected user to your own channel (given enough
permissions).

While this is a decent workaround, the end goal will be to remove
this action and replace it with a dedicated dialog to choose
the channel a user will be moved to.

See #4642

(cherry picked from commit f63b7b4)
(cherry picked from commit 1e35791)
(cherry picked from commit 74fe4e6)
@Krzmbrzl Krzmbrzl mentioned this pull request Apr 4, 2024
56 tasks
@Hartmnt Hartmnt merged commit dc1ac26 into 1.5.x Apr 4, 2024
21 checks passed
@Krzmbrzl Krzmbrzl deleted the backport/1.5.x/pr-5984 branch January 13, 2025 07:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants