[AT-SPI] Add FOCUSABLE state to TextField and TextEditor
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / text-controls / text-field-impl.cpp
index 068e55f..1d79c5f 100644 (file)
@@ -1235,6 +1235,9 @@ void TextField::OnInitialize()
   self.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::HEIGHT );
   self.OnSceneSignal().Connect( this, &TextField::OnSceneConnect );
 
+  //Enable highightability
+  self.SetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
+
   DevelControl::SetInputMethodContext( *this, mInputMethodContext );
 
   if( Dali::Toolkit::TextField::EXCEED_POLICY_CLIP == mExceedPolicy )
@@ -1533,6 +1536,12 @@ void TextField::OnKeyInputFocusLost()
   EmitKeyInputFocusSignal( false ); // Calls back into the Control hence done last.
 }
 
+bool TextField::OnAccessibilityActivated()
+{
+  SetKeyInputFocus();
+  return true;
+}
+
 void TextField::OnTap( const TapGesture& gesture )
 {
   DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField::OnTap %p\n", mController.Get() );
@@ -2027,9 +2036,19 @@ bool TextField::AccessibleImpl::CutText( size_t startPosition,
 
 Dali::Accessibility::States TextField::AccessibleImpl::CalculateStates()
 {
-  auto states = Control::Impl::AccessibleImpl::CalculateStates();
   using namespace Dali::Accessibility;
+
+  auto states = Control::Impl::AccessibleImpl::CalculateStates();
+
   states[State::EDITABLE] = true;
+  states[State::FOCUSABLE] = true;
+
+  Toolkit::Control focusControl = Toolkit::KeyInputFocusManager::Get().GetCurrentFocusControl();
+  if (self == focusControl)
+  {
+    states[State::FOCUSED] = true;
+  }
+
   return states;
 }