From: Shinwoo Kim Date: Fri, 10 Dec 2021 08:42:21 +0000 (+0900) Subject: [ATSPI] ignore ScreenReaderEnabled property on suppress mode X-Git-Tag: dali_2.1.3~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F39%2F267839%2F5;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git [ATSPI] ignore ScreenReaderEnabled property on suppress mode 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 --- diff --git a/dali/internal/accessibility/bridge/bridge-accessible.cpp b/dali/internal/accessibility/bridge/bridge-accessible.cpp index 189a091..00a2107 100644 --- a/dali/internal/accessibility/bridge/bridge-accessible.cpp +++ b/dali/internal/accessibility/bridge/bridge-accessible.cpp @@ -604,11 +604,6 @@ BridgeAccessible::ReadingMaterialType BridgeAccessible::GetReadingMaterial() describedByObject}; } -void BridgeAccessible::SuppressScreenReader(bool suppress) -{ - mIsScreenReaderSuppressed = suppress; -} - DBus::ValueOrError 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 diff --git a/dali/internal/accessibility/bridge/bridge-accessible.h b/dali/internal/accessibility/bridge/bridge-accessible.h index 38fd049..d5f6c95 100644 --- a/dali/internal/accessibility/bridge/bridge-accessible.h +++ b/dali/internal/accessibility/bridge/bridge-accessible.h @@ -189,11 +189,6 @@ public: ReadingMaterialType GetReadingMaterial(); /** - * @copydoc Dali::Accessibility::Bridge::SuppressScreenReader() - */ - void SuppressScreenReader(bool) override; - - /** * @copydoc Dali::Accessibility::Accessible::DoGesture() */ DBus::ValueOrError DoGesture(Dali::Accessibility::Gesture type, int32_t startPositionX, int32_t startPositionY, int32_t endPositionX, int32_t endPositionY, Dali::Accessibility::GestureState state, uint32_t eventTime); @@ -284,9 +279,6 @@ private: * @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 diff --git a/dali/internal/accessibility/bridge/bridge-base.h b/dali/internal/accessibility/bridge/bridge-base.h index d604994..dacbfc6 100644 --- a/dali/internal/accessibility/bridge/bridge-base.h +++ b/dali/internal/accessibility/bridge/bridge-base.h @@ -441,6 +441,7 @@ public: protected: mutable AppAccessible mApplication; std::vector mDefaultLabels; + bool mIsScreenReaderSuppressed = false; private: /** diff --git a/dali/internal/accessibility/bridge/bridge-impl.cpp b/dali/internal/accessibility/bridge/bridge-impl.cpp index 19d519a..116e703 100644 --- a/dali/internal/accessibility/bridge/bridge-impl.cpp +++ b/dali/internal/accessibility/bridge/bridge-impl.cpp @@ -443,6 +443,19 @@ public: } } + /** + * @copydoc Dali::Accessibility::Bridge::SuppressScreenReader() + */ + void SuppressScreenReader(bool suppress) override + { + if(mIsScreenReaderSuppressed == suppress) + { + return; + } + mIsScreenReaderSuppressed = suppress; + ReadScreenReaderEnabledProperty(); + } + bool ReadIsEnabledTimerCallback() { ReadIsEnabledProperty(); @@ -467,10 +480,14 @@ public: return; } mIsEnabled = std::get<0>(msg); - if(mIsEnabled) + if((!mIsScreenReaderSuppressed && mIsScreenReaderEnabled) || mIsEnabled) { ForceUp(); } + else + { + ForceDown(); + } }); } @@ -497,6 +514,12 @@ public: void ReadScreenReaderEnabledProperty() { + // can be true because of SuppressScreenReader before init + if (!mAccessibilityStatusClient) + { + return; + } + mAccessibilityStatusClient.property("ScreenReaderEnabled").asyncGet([this](DBus::ValueOrError msg) { if(!msg) { @@ -513,10 +536,14 @@ public: return; } mIsScreenReaderEnabled = std::get<0>(msg); - if(mIsScreenReaderEnabled) + if((!mIsScreenReaderSuppressed && mIsScreenReaderEnabled) || mIsEnabled) { ForceUp(); } + else + { + ForceDown(); + } }); } @@ -524,7 +551,7 @@ public: { mAccessibilityStatusClient.addPropertyChangedEvent("ScreenReaderEnabled", [this](bool res) { mIsScreenReaderEnabled = res; - if(mIsScreenReaderEnabled || mIsEnabled) + if((!mIsScreenReaderSuppressed && mIsScreenReaderEnabled) || mIsEnabled) { ForceUp(); }