Android A11Y: Announce value together with element name when focused

Before this patch when we focus a new element, only its description
was announced.
For elements like Slider that means that if it had no accessible name
or description, its value would be announced (all is fine here).
But if the slider is defined like that:
 Slider {
     Accessible.name: "int slider"
     value: 5
     from: 0
     to: 20
     stepSize: 1
 }

only the name ("int slider") will be announced, but not the actual
value.

This patch fixes the logic of content description generation. If the
element has value, then it is added to the description and announced
as well.

Task-number: QTBUG-93396
Pick-to: 6.3 6.2 5.15
Change-Id: Ia8667149ebd867945c5f57d951fd6ade0f382598
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
Ivan Solovev 2022-02-10 12:38:29 +01:00
parent b238f83380
commit a374d59abc

View File

@ -379,14 +379,18 @@ if (!clazz) { \
{
QString desc;
if (iface && iface->isValid()) {
bool hasValue = false;
desc = iface->text(QAccessible::Name);
if (desc.isEmpty())
desc = iface->text(QAccessible::Description);
if (desc.isEmpty()) {
desc = iface->text(QAccessible::Value);
if (desc.isEmpty()) {
desc = textFromValue(iface);
}
hasValue = !desc.isEmpty();
}
if (!hasValue) {
if (!desc.isEmpty())
desc.append(QChar(QChar::Space));
desc.append(textFromValue(iface));
}
}
return desc;