The 'suppress' mode means that we do not want screen-reader working
for our ATSPI related event. In this case, it would be better NOT to
enable ATSPI bridge.
So far we have used 'suppress-screen-reader' attribute. But sometimes
GetAttributes does not work with following error message.
"get attribute error: Did not receive a reply. Possible causes include:
the remote application did not send a reply, the message bus security
policy blocked the reply, the reply timeout expired, or the network
connection was broken."
We could handle this case, but the best is NOT to send unnecessary
ATSPI events.
The screen-reader should turning on ScreenReaderEnabled property only
The ATSPI bridge will be enabled, when IsEnabled property is set by
another AT client such as Aurum.
Change-Id: I529ae8cc29594915b20c23279371a6488d11ea2d
-void BridgeAccessible::SuppressScreenReader(bool suppress)
-{
- mIsScreenReaderSuppressed = suppress;
-}
-
DBus::ValueOrError<bool> BridgeAccessible::DoGesture(Dali::Accessibility::Gesture type, int32_t startPositionX, int32_t startPositionY, int32_t endPositionX, int32_t endPositionY, Dali::Accessibility::GestureState state, uint32_t eventTime)
{
// Please be aware of sending GestureInfo point in the different order with parameters
DBus::ValueOrError<bool> BridgeAccessible::DoGesture(Dali::Accessibility::Gesture type, int32_t startPositionX, int32_t startPositionY, int32_t endPositionX, int32_t endPositionY, Dali::Accessibility::GestureState state, uint32_t eventTime)
{
// Please be aware of sending GestureInfo point in the different order with parameters
ReadingMaterialType GetReadingMaterial();
/**
ReadingMaterialType GetReadingMaterial();
/**
- * @copydoc Dali::Accessibility::Bridge::SuppressScreenReader()
- */
- void SuppressScreenReader(bool) override;
-
- /**
* @copydoc Dali::Accessibility::Accessible::DoGesture()
*/
DBus::ValueOrError<bool> DoGesture(Dali::Accessibility::Gesture type, int32_t startPositionX, int32_t startPositionY, int32_t endPositionX, int32_t endPositionY, Dali::Accessibility::GestureState state, uint32_t eventTime);
* @copydoc Dali::Accessibility::Accessible::DoGesture()
*/
DBus::ValueOrError<bool> DoGesture(Dali::Accessibility::Gesture type, int32_t startPositionX, int32_t startPositionY, int32_t endPositionX, int32_t endPositionY, Dali::Accessibility::GestureState state, uint32_t eventTime);
* @return The Component object
*/
Dali::Accessibility::Component* CalculateNavigableAccessibleAtPoint(Dali::Accessibility::Accessible* root, Dali::Accessibility::Point point, Dali::Accessibility::CoordinateType type, unsigned int maxRecursionDepth);
* @return The Component object
*/
Dali::Accessibility::Component* CalculateNavigableAccessibleAtPoint(Dali::Accessibility::Accessible* root, Dali::Accessibility::Point point, Dali::Accessibility::CoordinateType type, unsigned int maxRecursionDepth);
-
-
-protected:
- bool mIsScreenReaderSuppressed = false;
};
#endif // DALI_INTERNAL_ACCESSIBILITY_BRIDGE_ACCESSIBLE_H
};
#endif // DALI_INTERNAL_ACCESSIBILITY_BRIDGE_ACCESSIBLE_H
protected:
mutable AppAccessible mApplication;
std::vector<Dali::Accessibility::Accessible*> mPopups;
protected:
mutable AppAccessible mApplication;
std::vector<Dali::Accessibility::Accessible*> mPopups;
+ bool mIsScreenReaderSuppressed = false;
+ /**
+ * @copydoc Dali::Accessibility::Bridge::SuppressScreenReader()
+ */
+ void SuppressScreenReader(bool suppress) override
+ {
+ if(mIsScreenReaderSuppressed == suppress)
+ {
+ return;
+ }
+ mIsScreenReaderSuppressed = suppress;
+ ReadScreenReaderEnabledProperty();
+ }
+
bool ReadIsEnabledTimerCallback()
{
ReadIsEnabledProperty();
bool ReadIsEnabledTimerCallback()
{
ReadIsEnabledProperty();
return;
}
mIsEnabled = std::get<0>(msg);
return;
}
mIsEnabled = std::get<0>(msg);
+ if((!mIsScreenReaderSuppressed && mIsScreenReaderEnabled) || mIsEnabled)
+ else
+ {
+ ForceDown();
+ }
void ReadScreenReaderEnabledProperty()
{
void ReadScreenReaderEnabledProperty()
{
+ // can be true because of SuppressScreenReader before init
+ if (!mAccessibilityStatusClient)
+ {
+ return;
+ }
+
mAccessibilityStatusClient.property<bool>("ScreenReaderEnabled").asyncGet([this](DBus::ValueOrError<bool> msg) {
if(!msg)
{
mAccessibilityStatusClient.property<bool>("ScreenReaderEnabled").asyncGet([this](DBus::ValueOrError<bool> msg) {
if(!msg)
{
return;
}
mIsScreenReaderEnabled = std::get<0>(msg);
return;
}
mIsScreenReaderEnabled = std::get<0>(msg);
- if(mIsScreenReaderEnabled)
+ if((!mIsScreenReaderSuppressed && mIsScreenReaderEnabled) || mIsEnabled)
+ else
+ {
+ ForceDown();
+ }
{
mAccessibilityStatusClient.addPropertyChangedEvent<bool>("ScreenReaderEnabled", [this](bool res) {
mIsScreenReaderEnabled = res;
{
mAccessibilityStatusClient.addPropertyChangedEvent<bool>("ScreenReaderEnabled", [this](bool res) {
mIsScreenReaderEnabled = res;
- if(mIsScreenReaderEnabled || mIsEnabled)
+ if((!mIsScreenReaderSuppressed && mIsScreenReaderEnabled) || mIsEnabled)