From 4aa7dae72975311995ca1d20f4057735862f174b Mon Sep 17 00:00:00 2001 From: Lukasz Oleksak Date: Wed, 1 Dec 2021 12:51:36 +0100 Subject: [PATCH] [ATSPI] Fix for DefaultLabel This patch: * replaces usage of existing API AddPopup()/RemovePopup() by RegisterDefaultLabel()/UnregisterDefaultLabel() which has wider applicability (not only for popups) * extends test utils to allow write tests that emit window:activate / window:deactivate events Related patches: https://review.tizen.org/gerrit/#/c/platform/core/uifw/dali-adaptor/+/267321/ Change-Id: Ibae793c10d2f29fdd4af32fc69d518e247b54633 --- .../accessibility-test-utils.cpp | 9 +++++++++ dali-toolkit/internal/controls/popup/popup-impl.cpp | 20 ++++++-------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.cpp b/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.cpp index b654d52..2747582 100644 --- a/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.cpp +++ b/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.cpp @@ -80,6 +80,15 @@ namespace Accessibility gMoveOutedCalled = true; return wr->newReplyMessage(m); }; + + wr->testMethods[std::tuple{"/org/a11y/atspi/accessible", "org.a11y.atspi.Event.Window", "Activate", MethodType::Method}] = + [wr](const MessagePtr &m) -> MessagePtr { + return wr->newReplyMessage(m); + }; + wr->testMethods[std::tuple{"/org/a11y/atspi/accessible", "org.a11y.atspi.Event.Window", "Deactivate", MethodType::Method}] = + [wr](const MessagePtr &m) -> MessagePtr { + return wr->newReplyMessage(m); + }; } auto wr = static_cast(DBusWrapper::Installed()); wr->fromTestChangeProperty("/org/a11y/bus", "org.a11y.Status", "ScreenReaderEnabled", b); diff --git a/dali-toolkit/internal/controls/popup/popup-impl.cpp b/dali-toolkit/internal/controls/popup/popup-impl.cpp index cc65de9..9abcfe0 100644 --- a/dali-toolkit/internal/controls/popup/popup-impl.cpp +++ b/dali-toolkit/internal/controls/popup/popup-impl.cpp @@ -726,25 +726,16 @@ void Popup::SetDisplayState(Toolkit::Popup::DisplayState displayState) return; } - auto* accessible = Dali::Accessibility::Accessible::Get(Self()); - if(display) - { - Dali::Accessibility::Bridge::GetCurrentBridge()->AddPopup(accessible); - accessible->EmitStateChanged(Dali::Accessibility::State::SHOWING, 1, 0); - } - else - { - accessible->EmitStateChanged(Dali::Accessibility::State::SHOWING, 0, 0); - Dali::Accessibility::Bridge::GetCurrentBridge()->RemovePopup(accessible); - } - // Convert the bool state to the actual display state to use. - mDisplayState = display ? Toolkit::Popup::SHOWING : Toolkit::Popup::HIDING; + mDisplayState = display ? Toolkit::Popup::SHOWING : Toolkit::Popup::HIDING; + auto* accessible = Dali::Accessibility::Accessible::Get(Self()); if(display) { // Update the state to indicate the current intent. mDisplayState = Toolkit::Popup::SHOWING; + Dali::Accessibility::Bridge::GetCurrentBridge()->RegisterDefaultLabel(accessible); + accessible->EmitShowing(true); // We want the popup to have key input focus when it is displayed SetKeyInputFocus(); @@ -798,8 +789,9 @@ void Popup::SetDisplayState(Toolkit::Popup::DisplayState displayState) else // Not visible. { mDisplayState = Toolkit::Popup::HIDING; + Dali::Accessibility::Bridge::GetCurrentBridge()->UnregisterDefaultLabel(accessible); ClearKeyInputFocus(); - + accessible->EmitShowing(false); // Restore the keyboard focus when popup is hidden. if(mPreviousFocusedActor && mPreviousFocusedActor.GetProperty(Actor::Property::KEYBOARD_FOCUSABLE)) { -- 2.7.4