From e77084dcdc2ef59082ff77b72f45aad550882d17 Mon Sep 17 00:00:00 2001 From: Bumseung Cho Date: Wed, 3 Jul 2013 15:34:54 +0900 Subject: [PATCH] A screen reader bug was fixed. Change-Id: Ie17fba62d7ac032543ca02be82de6661ded8d219 Signed-off-by: Bumseung Cho --- src/ui/FUiAccessibilityContainer.cpp | 2 +- src/ui/FUi_AccessibilityElement.cpp | 4 ++++ src/ui/FUi_AccessibilityManager.cpp | 20 ++++++++++++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/ui/FUiAccessibilityContainer.cpp b/src/ui/FUiAccessibilityContainer.cpp index 21ef355..db41fdc 100644 --- a/src/ui/FUiAccessibilityContainer.cpp +++ b/src/ui/FUiAccessibilityContainer.cpp @@ -80,7 +80,7 @@ AccessibilityContainer::GetElement(const String& name) const SysAssertf(__pAccessibilityContainerImpl != null, "Not constructed properly by platform."); ClearLastResult(); AccessibilityElement* pElement = __pAccessibilityContainerImpl->GetChildElement(name); - SysTryReturn(NID_UI, pElement, null, E_SYSTEM, "[E_SYSTEM] Getting a child by name is failed.."); + SysTryReturn(NID_UI, pElement, null, E_SYSTEM, "[E_SYSTEM] Getting a child by name is failed.. name : %ls", name.GetPointer()); return pElement; } diff --git a/src/ui/FUi_AccessibilityElement.cpp b/src/ui/FUi_AccessibilityElement.cpp index 83851f7..eb0bcab 100644 --- a/src/ui/FUi_AccessibilityElement.cpp +++ b/src/ui/FUi_AccessibilityElement.cpp @@ -118,6 +118,10 @@ _AccessibilityElement::~_AccessibilityElement(void) __pStatusId = null; delete [] __pValueId; __pValueId = null; + if (__pParent && this == __pParent->GetCurrentFocusedElement()) + { + _AccessibilityManager::GetInstance()->RequestAutoReading(_ACCESSIBILITY_AUTO_READING_MODE_FIRST_ITEM); + } } result _AccessibilityElement::Construct(const String& name, const FloatRectangle& bounds) diff --git a/src/ui/FUi_AccessibilityManager.cpp b/src/ui/FUi_AccessibilityManager.cpp index 015550b..317814b 100644 --- a/src/ui/FUi_AccessibilityManager.cpp +++ b/src/ui/FUi_AccessibilityManager.cpp @@ -1226,6 +1226,10 @@ _AccessibilityManager::RemoveContainer(const _AccessibilityContainer& container) } if (__pTargetContainer == &container) { + if(__pTargetContainer) + { + __pTargetContainer->SetCurrentFocusedElement(null); + } __pTargetContainer = null; __pTargetElement = null; } @@ -1636,7 +1640,12 @@ _AccessibilityManager::MoveFocus(_AccessibilityFocusDirection direction) { pElement = null; __pTargetElement = null; + if(__pTargetContainer) + { + __pTargetContainer->SetCurrentFocusedElement(null); + } __pTargetContainer = null; + } else { @@ -1774,7 +1783,7 @@ _AccessibilityManager::MoveFocus(_AccessibilityFocusDirection direction) void _AccessibilityManager::RequestToDrawFocusUi() { - if (__pTargetContainer) + if (__targetControlHandle.IsValid()) { //HidePopup(); DrawFocusUi(*__pTargetElement); @@ -2339,6 +2348,10 @@ _AccessibilityManager::OnAccessibilityScreenReaderIsActivated(bool set) { __pTtsPlayer->Deactivate(); EraseFocusUi(); + if(__pTargetContainer) + { + __pTargetContainer->SetCurrentFocusedElement(null); + } __pTargetContainer = null; __pTargetElement = null; __pTitleElement = null; @@ -2455,7 +2468,10 @@ void _AccessibilityManager::ResetFocusInformation(void) { EraseFocusUi(); - + if(__pTargetContainer) + { + __pTargetContainer->SetCurrentFocusedElement(null); + } __pTargetContainer = null; __pTargetElement = null; __pTitleElement = null; -- 2.7.4