// CLASS HEADER
//INTERNAL INCLUDES
+#include <dali/devel-api/atspi-interfaces/accessible.h>
+#include <dali/devel-api/atspi-interfaces/action.h>
+#include <dali/devel-api/atspi-interfaces/application.h>
+#include <dali/devel-api/atspi-interfaces/collection.h>
+#include <dali/devel-api/atspi-interfaces/component.h>
+#include <dali/devel-api/atspi-interfaces/editable-text.h>
+#include <dali/devel-api/atspi-interfaces/hyperlink.h>
+#include <dali/devel-api/atspi-interfaces/hypertext.h>
+#include <dali/devel-api/atspi-interfaces/selection.h>
+#include <dali/devel-api/atspi-interfaces/text.h>
+#include <dali/devel-api/atspi-interfaces/value.h>
+#include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
#include <dali/internal/accessibility/bridge/accessibility-common.h>
#include <third-party/libunibreak/linebreak.h>
#include <third-party/libunibreak/wordbreak.h>
using namespace Dali::Accessibility;
-std::vector<std::string> Accessible::GetInterfaces()
+std::vector<std::string> Accessible::GetInterfaces() const
{
std::vector<std::string> tmp;
tmp.push_back(AtspiDbusInterfaceAccessible);
- if(dynamic_cast<Collection*>(this))
+ if(dynamic_cast<const Collection*>(this))
{
tmp.push_back(AtspiDbusInterfaceCollection);
}
- if(dynamic_cast<Text*>(this))
+ if(dynamic_cast<const Text*>(this))
{
tmp.push_back(AtspiDbusInterfaceText);
}
- if(dynamic_cast<EditableText*>(this))
+ if(dynamic_cast<const EditableText*>(this))
{
tmp.push_back(AtspiDbusInterfaceEditableText);
}
- if(dynamic_cast<Value*>(this))
+ if(dynamic_cast<const Value*>(this))
{
tmp.push_back(AtspiDbusInterfaceValue);
}
- if(dynamic_cast<Component*>(this))
+ if(dynamic_cast<const Component*>(this))
{
tmp.push_back(AtspiDbusInterfaceComponent);
}
- if(auto action = dynamic_cast<Action*>(this))
+ if(auto action = dynamic_cast<const Action*>(this))
{
if(action->GetActionCount() > 0)
{
tmp.push_back(AtspiDbusInterfaceAction);
}
}
- if(dynamic_cast<Selection*>(this))
+ if(dynamic_cast<const Selection*>(this))
{
tmp.push_back(AtspiDbusInterfaceSelection);
}
+ if(dynamic_cast<const Hypertext*>(this))
+ {
+ tmp.push_back(AtspiDbusInterfaceHypertext);
+ }
+ if(dynamic_cast<const Hyperlink*>(this))
+ {
+ tmp.push_back(AtspiDbusInterfaceHyperlink);
+ }
return tmp;
}
{
}
-Accessible::~Accessible()
+Accessible::~Accessible() noexcept
{
auto handle = mBridgeData.lock();
if(handle)
bridgeData->mBridge->EmitCursorMoved(this, cursorPosition);
}
}
+
+void Accessible::EmitMovedOutOfScreen(ScreenRelativeMoveType type)
+{
+ if(auto bridgeData = GetBridgeData())
+ {
+ bridgeData->mBridge->EmitMovedOutOfScreen(this, type);
+ }
+}
+
void Accessible::Emit(WindowEvent event, unsigned int detail)
{
if(auto bridgeData = GetBridgeData())
}
}
-std::vector<Accessible*> Accessible::GetChildren()
-{
- std::vector<Accessible*> tmp(GetChildCount());
- for(auto i = 0u; i < tmp.size(); ++i)
- {
- tmp[i] = GetChildAtIndex(i);
- }
- return tmp;
-}
-
-std::shared_ptr<Bridge::Data> Accessible::GetBridgeData()
+std::shared_ptr<Bridge::Data> Accessible::GetBridgeData() const
{
auto handle = mBridgeData.lock();
if(!handle)
{
auto bridge = Bridge::GetCurrentBridge();
- handle = bridge->mData;
+ handle = bridge->mData;
}
return handle;
}
-Address Accessible::GetAddress()
+Address Accessible::GetAddress() const
{
auto handle = mBridgeData.lock();
if(!handle)
return {handle ? handle->mBusName : "", tmp.str()};
}
-void Bridge::RegisterOnBridge(Accessible* object)
+void Bridge::RegisterOnBridge(const Accessible* object)
{
assert(!object->mBridgeData.lock() || object->mBridgeData.lock() == mData);
if(!object->mBridgeData.lock())
}
}
-bool Accessible::IsProxy()
+bool Accessible::IsHidden() const
{
return false;
}
-Accessible* Accessible::GetDefaultLabel()
+bool Accessible::IsProxy() const
{
- return this;
+ return false;
}
void Accessible::NotifyAccessibilityStateChange(Dali::Accessibility::States states, bool isRecursive)
{
if(auto data = GetBridgeData())
{
- auto currentState = GetStates() & states;
- for(auto i = 0u; i < currentState.size(); i++)
+ for(auto i = 0u; i < static_cast<unsigned int>(Dali::Accessibility::State::MAX_COUNT); i++)
{
auto index = static_cast<Dali::Accessibility::State>(i);
- if(currentState[index])
+ if(states[index])
{
- data->mBridge->EmitStateChanged(this, index, 1, 0);
+ data->mBridge->EmitStateChanged(this, index, GetStates()[index], 0);
}
}