[AT-SPI] Add FOCUSABLE state to TextField and TextEditor 72/244472/19
authorKamil Konieczny <k.konieczny@samsung.com>
Fri, 18 Sep 2020 10:53:39 +0000 (12:53 +0200)
committerArtur Świgoń <a.swigon@samsung.com>
Fri, 23 Oct 2020 13:07:00 +0000 (15:07 +0200)
Add FOCUSABLE state to TextField and TextEditor. Also while at this,
add or remove FOCUSED depending on keyboard focus.

Change-Id: I9bb0f68f3e3f521842c870ea099bae5617b7fc4d

dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp
dali-toolkit/internal/controls/text-controls/text-field-impl.cpp

index 5aa9ce2..7b4e8a2 100644 (file)
@@ -37,6 +37,7 @@
 #include <dali-toolkit/devel-api/text/rendering-backend.h>
 #include <dali-toolkit/devel-api/controls/control-devel.h>
 #include <dali-toolkit/devel-api/controls/control-depth-index-ranges.h>
+#include <dali-toolkit/devel-api/focus-manager/keyinput-focus-manager.h>
 #include <dali-toolkit/public-api/visuals/visual-properties.h>
 #include <dali-toolkit/internal/text/text-enumerations-impl.h>
 #include <dali-toolkit/internal/text/rendering/text-backend.h>
@@ -2098,9 +2099,17 @@ bool TextEditor::AccessibleImpl::CutText( size_t startPosition,
 
 Dali::Accessibility::States TextEditor::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;
 }
index 0c9f544..1d79c5f 100644 (file)
@@ -2036,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;
 }