}
bool
-_TokenEdit::OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element)
-{
- return false;
-}
-
-bool
-_TokenEdit::OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element)
-{
- return false;
-}
-
-bool
-_TokenEdit::OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element)
-{
- return false;
-}
-
-bool
-_TokenEdit::OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element)
-{
- return false;
-}
-
-bool
_TokenEdit::OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element)
{
return __pTokenEditPresenter->OnAccessibilityFocusIn(control, element);
bool
_TokenEdit::OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element)
{
- return false;
-}
-
-bool
-_TokenEdit::OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element)
-{
- return false;
-}
-
-bool
-_TokenEdit::OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element)
-{
- return false;
+ return __pTokenEditPresenter->OnAccessibilityActionPerformed(control, element);
}
void
, __accessibilityElements()
, __focusedTokenIndex(-1)
, __drawFocusState(false)
+ , __accessibilityFocusIn(false)
{
}
}
InsertTokenAccessibilityElementAt(index);
+ UpdateTokenAccessibilityBounds();
if (isUser)
{
{
__pTokenEdit->SetCursorAccessibilityBounds(tokenTextRect);
}
-
}
else
{
SetCursorDisabled(false);
StartCursorTimer();
}
+ // when pressed enter while editing a token, set cursor as global focused element.
+ _AccessibilityElement* pCursorAccessibilityElement = __pTokenEdit->GetCursorAccessibilityElement();
+ if (pCursorAccessibilityElement && __accessibilityFocusIn)
+ {
+ _AccessibilityManager* pAccessibilityManager = _AccessibilityManager::GetInstance();
+ pAccessibilityManager->SetGlobalFocusedElement(*pCursorAccessibilityElement);
+ pAccessibilityManager->RequestToDrawFocusUi();
+ }
return;
}
}
ChangeInternalLayout(orientation);
+ __pTokenEdit->UpdateAccessibilityElement(EDIT_ACCESSIBILITY_ELEMENT_TYPE_TEXT);
+
return;
}
String labelText = pToken->GetText();
pAccessibilityElement->SetBounds(pToken->displayRect);
pAccessibilityElement->SetLabel(labelText);
- pContainer->AddElement(*pAccessibilityElement);
+ pContainer->InsertElement(*pAccessibilityElement, index);
__accessibilityElements.InsertAt(pAccessibilityElement, index);
}
if ((__accessibilityElements.GetAt(index, pAccessibilityElement)) == E_SUCCESS)
{
- pAccessibilityElement->SetBounds(pToken->displayRect);
+ if (pAccessibilityElement)
+ {
+ pAccessibilityElement->SetBounds(pToken->displayRect);
+ }
}
}
return r;
return r;
}
+result
+_TokenEditPresenter::ScrollToTitleAccessibilityElement(void)
+{
+ _AccessibilityElement* pTitleAccessibilityElement = __pTokenEdit->GetTitleTextAccessibilityElement();
+ if (pTitleAccessibilityElement)
+ {
+ FloatRectangle titleTextBounds = pTitleAccessibilityElement->GetBounds();
+ if (titleTextBounds.y < 0)
+ {
+ float tokenTopMargin = 0.0f;
+ _ControlOrientation orientation = __pTokenEdit->GetOrientation();
+ GET_SHAPE_CONFIG(TOKENEDIT::TOP_MARGIN, orientation, tokenTopMargin);
+ float newScrollValue = titleTextBounds.y - tokenTopMargin - __scrollValue;
+ result r = RecalculateTokenBounds(newScrollValue);
+ SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
+ }
+ }
+
+ return E_SUCCESS;
+}
+
bool
_TokenEditPresenter::OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element)
{
result r = E_SUCCESS;
+ _AccessibilityElement* pTitleAccessibilityElement = __pTokenEdit->GetTitleTextAccessibilityElement();
+
+ __accessibilityFocusIn = true;
+
if (__focusOutIndex < 0) // Not a token accessibility element
{
- return false;
+ if (pTitleAccessibilityElement != &element)
+ {
+ return false;
+ }
}
_Token* pToken = null;
_AccessibilityElement* pCurrentElement = const_cast< _AccessibilityElement* >(&element);
_AccessibilityElement* pPreviousAccessibilityElement = null;
_AccessibilityElement* pNextAccessibilityElement = null;
+ if (pTitleAccessibilityElement == &element)
+ {
+ ScrollToTitleAccessibilityElement();
+ UpdateTokenAccessibilityBounds();
+ return false;
+ }
r = __accessibilityElements.GetAt(__focusOutIndex, pPreviousAccessibilityElement);
SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, true, r, "[%s] Propagating.", GetErrorMessage(r));
_AccessibilityElement* pAccessibilityElement = null;
pAccessibilityElement = const_cast< _AccessibilityElement* >(&element);
__accessibilityElements.IndexOf(pAccessibilityElement, __focusOutIndex);
+ __accessibilityFocusIn = false;
+
+ return false;
+}
+
+bool
+_TokenEditPresenter::OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element)
+{
+ _AccessibilityElement* pTextAccessibilityElement = __pTokenEdit->GetTextAccessibilityElement();
+ if (pTextAccessibilityElement != null)
+ {
+ if (pTextAccessibilityElement == &element)
+ {
+ if (__pTokenEdit->IsInternalFocused()) // Set cursor as global focus accessibility element only in focused mode.
+ {
+ _AccessibilityElement* pCursorAccessibilityElement = __pTokenEdit->GetCursorAccessibilityElement();
+ if (pCursorAccessibilityElement)
+ {
+ _AccessibilityManager::GetInstance()->SetGlobalFocusedElement(*pCursorAccessibilityElement);
+ _AccessibilityManager::GetInstance()->RequestToDrawFocusUi();
+ }
+ }
+ }
+ }
return false;
}
void RemoveCursorAccessibilityElement(void);
//_IAccessibilityListener callbacks
- virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
- virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
- virtual bool OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
- virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element){return false;}
+ virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element){return false;}
+ virtual bool OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element){return false;}
+ virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element){return false;}
virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
- virtual bool OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
- virtual bool OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ virtual bool OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element){return false;}
+ virtual bool OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element){return false;}
private:
_TokenEdit(const _TokenEdit& rhs);
void RemoveTokenAccessibilityElementAt(int index);
result UpdateTokenAccessibilityBounds(void);
result UpdateTitleAccessibilityBounds(const FloatRectangle& titleBounds);
- result ScrollToFocusedTokenAccessibilityElement(const _AccessibilityElement& element);
//Accessibility callbacks
bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
+ bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
result ScrollToFocusedToken(void);
result AttachCursorToToken(void);
bool CheckCopyPastePopupShowStatus(void);
result ChangeInternalLayout(_ControlOrientation orientation);
float GetMaxTextHeight(void);
+ result ScrollToFocusedTokenAccessibilityElement(const _AccessibilityElement& element);
+ result ScrollToTitleAccessibilityElement(void);
private:
Tizen::Ui::Controls::_TokenEdit* __pTokenEdit;
bool __drawFocusState;
+ bool __accessibilityFocusIn;
+
}; // _TokenEditPresenter
}}} // Tizen::Ui::Controls