summaryrefslogtreecommitdiff
path: root/dali/internal/accessibility/bridge
diff options
context:
space:
mode:
authorMaria Bialota <m.bialota@samsung.com>2021-11-25 19:52:06 +0100
committerMaria BiaƂota <m.bialota@samsung.com>2021-12-03 09:40:29 +0000
commit8aa2100eef03fc900d971da98c949630960ea7f9 (patch)
treebaf5deee01efab361937affe6e81781744dbdd96 /dali/internal/accessibility/bridge
parent41625d23008b81765e49120819355b246f17aea4 (diff)
downloaddali-adaptor-8aa2100eef03fc900d971da98c949630960ea7f9.tar.gz
dali-adaptor-8aa2100eef03fc900d971da98c949630960ea7f9.tar.bz2
dali-adaptor-8aa2100eef03fc900d971da98c949630960ea7f9.zip
[AT-SPI] Added support for menu item count listing
Change-Id: Ic1fd8fc8404614c09d8d35bf630dbc45406ebb92
Diffstat (limited to 'dali/internal/accessibility/bridge')
-rw-r--r--dali/internal/accessibility/bridge/bridge-accessible.cpp27
1 files changed, 16 insertions, 11 deletions
diff --git a/dali/internal/accessibility/bridge/bridge-accessible.cpp b/dali/internal/accessibility/bridge/bridge-accessible.cpp
index e389f15b3..2b3d24adb 100644
--- a/dali/internal/accessibility/bridge/bridge-accessible.cpp
+++ b/dali/internal/accessibility/bridge/bridge-accessible.cpp
@@ -203,15 +203,15 @@ static bool IsObjectAcceptable(Accessible* obj)
return IsObjectAcceptable(component);
}
-static int32_t GetItemCountOfList(Accessible* obj)
+static int32_t GetItemCountOfContainer(Accessible* obj, Dali::Accessibility::Role containerRole, Dali::Accessibility::Role itemRole, bool isDirectChild)
{
int32_t itemCount = 0;
- if(obj && obj->GetRole() == Role::LIST)
+ if(obj && (!isDirectChild || obj->GetRole() == containerRole))
{
for(auto i = 0u; i < static_cast<size_t>(obj->GetChildCount()); ++i)
{
auto child = obj->GetChildAtIndex(i);
- if(child && child->GetRole() == Role::LIST_ITEM)
+ if(child && child->GetRole() == itemRole)
{
itemCount++;
}
@@ -220,10 +220,10 @@ static int32_t GetItemCountOfList(Accessible* obj)
return itemCount;
}
-static int32_t GetItemCountOfFirstDescendantList(Accessible* obj)
+static int32_t GetItemCountOfFirstDescendantContainer(Accessible* obj, Dali::Accessibility::Role containerRole, Dali::Accessibility::Role itemRole, bool isDirectChild)
{
int32_t itemCount = 0;
- itemCount = GetItemCountOfList(obj);
+ itemCount = GetItemCountOfContainer(obj, containerRole, itemRole, isDirectChild);
if(itemCount > 0 || !obj)
{
return itemCount;
@@ -232,7 +232,7 @@ static int32_t GetItemCountOfFirstDescendantList(Accessible* obj)
for(auto i = 0u; i < static_cast<size_t>(obj->GetChildCount()); ++i)
{
auto child = obj->GetChildAtIndex(i);
- itemCount = GetItemCountOfFirstDescendantList(child);
+ itemCount = GetItemCountOfFirstDescendantContainer(child, containerRole, itemRole, isDirectChild);
if(itemCount > 0)
{
return itemCount;
@@ -542,11 +542,15 @@ BridgeAccessible::ReadingMaterialType BridgeAccessible::GetReadingMaterial()
}
}
- auto role = static_cast<uint32_t>(self->GetRole());
+ auto atspiRole = self->GetRole();
int32_t listChildrenCount = 0;
- if(role == static_cast<uint32_t>(Role::DIALOG))
+ if(atspiRole == Role::DIALOG)
{
- listChildrenCount = GetItemCountOfFirstDescendantList(self);
+ listChildrenCount = GetItemCountOfFirstDescendantContainer(self, Role::LIST, Role::LIST_ITEM, true);
+ }
+ else if(atspiRole == Role::POPUP_MENU)
+ {
+ listChildrenCount = GetItemCountOfFirstDescendantContainer(self, Role::POPUP_MENU, Role::MENU_ITEM, false);
}
auto* textInterface = dynamic_cast<Dali::Accessibility::Text*>(self);
@@ -556,11 +560,12 @@ BridgeAccessible::ReadingMaterialType BridgeAccessible::GetReadingMaterial()
nameFromTextInterface = textInterface->GetText(0, textInterface->GetCharacterCount());
}
- auto description = self->GetDescription();
auto attributes = self->GetAttributes();
- auto states = self->GetStates();
auto name = self->GetName();
+ auto role = static_cast<uint32_t>(atspiRole);
+ auto states = self->GetStates();
auto localizedRoleName = self->GetLocalizedRoleName();
+ auto description = self->GetDescription();
auto indexInParent = static_cast<int32_t>(self->GetIndexInParent());
auto parent = self->GetParent();