From: Eunki Hong Date: Fri, 6 Aug 2021 03:46:40 +0000 (+0000) Subject: Merge "[ATSPI] Fix for SCREEN coordinate type in GetExtents" into devel/master X-Git-Tag: dali_2.0.39~6 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=f934e958dc240633a80b94207bb076944e48d7a2;hp=069b358a1eef7132e4ac380ad5b040f378c9568b Merge "[ATSPI] Fix for SCREEN coordinate type in GetExtents" into devel/master --- 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 6d61f56..a9d9f03 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 @@ -204,10 +204,10 @@ namespace Dali { return std::move(std::get<0>(chs)); } - std::tuple< int32_t, int32_t, int32_t, int32_t > TestGetExtents(const Address &adr) + std::tuple< int32_t, int32_t, int32_t, int32_t > TestGetExtents(const Address &adr, Dali::Accessibility::CoordinateType coordinateType) { auto wr = static_cast(DBusWrapper::Installed()); - auto chs = wr->fromTestCall< std::tuple< int32_t, int32_t, int32_t, int32_t > >(adr.GetPath(), "org.a11y.atspi.Component", "GetExtents", std::tuple(0)); + auto chs = wr->fromTestCall< std::tuple< int32_t, int32_t, int32_t, int32_t > >(adr.GetPath(), "org.a11y.atspi.Component", "GetExtents", std::make_tuple(static_cast(coordinateType))); return std::move(std::get<0>(chs)); } diff --git a/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.h b/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.h index 4966ff2..6c172fd 100644 --- a/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.h +++ b/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.h @@ -24,7 +24,7 @@ namespace Dali { bool TestGrabFocus(const Address &adr); bool TestGrabHighlight(const Address &adr); bool TestClearHighlight(const Address &adr); - std::tuple< int32_t, int32_t, int32_t, int32_t > TestGetExtents(const Address &adr); + std::tuple< int32_t, int32_t, int32_t, int32_t > TestGetExtents(const Address &adr, Dali::Accessibility::CoordinateType coordinateType ); int TestGetMdiZOrder(const Address &adr); double TestGetAlpha(const Address &adr); void printTree(const Address &root, size_t depth = 0); diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp index 567ba61..0b1ec0e 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -694,17 +695,102 @@ int UtcDaliAccessibilityGrabFocus(void) END_TEST; } -int UtcDaliAccessibilityGetExtents(void) +int UtcDaliAccessibilityGetExtentsScreenAndWindowPositionMatch(void) { ToolkitTestApplication application; + tet_infoline( "UtcDaliAccessibilityGetExtentsScreenAndWindowPositionMatch" ); Dali::Accessibility::TestEnableSC( true ); auto control = Control::New(); Stage::GetCurrent().GetRootLayer().Add( control ); - control.SetProperty(Actor::Property::POSITION, Vector3(10, 10, 100)); - control.SetProperty(Actor::Property::SIZE, Vector2(10, 10)); + auto window = Dali::DevelWindow::Get( control ); + DALI_TEST_CHECK( window ); + + //window.SetPosition({0,0}); + DevelWindow::SetPositionSize( window, PositionSize( 0,0,480, 240 ) ); + + control.SetProperty( Actor::Property::POSITION, Vector3( 10, 10, 100 ) ); + control.SetProperty( Actor::Property::SIZE, Vector2( 10, 10 ) ); + + application.SendNotification(); + application.Render( 1 ); + + auto a = Dali::Accessibility::Accessible::Get( control ); + auto a_component = dynamic_cast( a ); + + auto extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::SCREEN ); + DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION ); + + auto bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::SCREEN ); + DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 5, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 5, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION ); + + extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::WINDOW ); + DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION ); + + bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::WINDOW ); + DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 5, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 5, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION ); + + control.SetProperty( Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT, false ); + application.SendNotification(); + application.Render( 1 ); + + extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::SCREEN ); + DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION ); + + bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::SCREEN ); + DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION ); + + extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::WINDOW ); + DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION ); + + bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::WINDOW ); + DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION ); + + Dali::Accessibility::TestEnableSC( false ); + + END_TEST; +} + +int UtcDaliAccessibilityGetExtentsScreenAndWindowPositionDoNotMatch(void) +{ + ToolkitTestApplication application; + + Dali::Accessibility::TestEnableSC( true ); + + auto control = Control::New(); + Stage::GetCurrent().GetRootLayer().Add( control ); + auto window = Dali::DevelWindow::Get( control ); + //window.SetPosition({33,33}); + DevelWindow::SetPositionSize( window, PositionSize( 33,33,480, 240 ) ); + + control.SetProperty( Actor::Property::POSITION, Vector3( 10, 10, 100 ) ); + control.SetProperty( Actor::Property::SIZE, Vector2( 10, 10 ) ); application.SendNotification(); application.Render( 1 ); @@ -712,13 +798,25 @@ int UtcDaliAccessibilityGetExtents(void) auto a = Dali::Accessibility::Accessible::Get( control ); auto a_component = dynamic_cast( a ); - auto extents = a_component->GetExtents(Dali::Accessibility::CoordinateType::SCREEN); + auto extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::SCREEN ); + DALI_TEST_EQUALS( extents.x, 38.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.y, 38.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION ); + + auto bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::SCREEN ); + DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 38, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 38, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION ); + + extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::WINDOW ); DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION ); - auto bridge_extents = TestGetExtents( a_component -> GetAddress() ); + bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::WINDOW ); DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 5, TEST_LOCATION ); DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 5, TEST_LOCATION ); DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION ); @@ -728,13 +826,25 @@ int UtcDaliAccessibilityGetExtents(void) application.SendNotification(); application.Render( 1 ); - extents = a_component->GetExtents(Dali::Accessibility::CoordinateType::SCREEN); + extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::SCREEN ); + DALI_TEST_EQUALS( extents.x, 43.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.y, 43.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION ); + + bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::SCREEN ); + DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 43, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 43, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION ); + DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION ); + + extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::WINDOW ); DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION ); - bridge_extents = TestGetExtents( a_component -> GetAddress() ); + bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::WINDOW ); DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 10, TEST_LOCATION ); DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 10, TEST_LOCATION ); DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION ); diff --git a/dali-toolkit/devel-api/controls/accessible-impl.cpp b/dali-toolkit/devel-api/controls/accessible-impl.cpp index ba1e0ed..9f1c78e 100644 --- a/dali-toolkit/devel-api/controls/accessible-impl.cpp +++ b/dali-toolkit/devel-api/controls/accessible-impl.cpp @@ -24,6 +24,7 @@ #endif #include +#include // INTERNAL INCLUDES #include @@ -308,7 +309,16 @@ Dali::Rect<> AccessibleImpl::GetExtents(Dali::Accessibility::CoordinateType type Vector3 anchorPointOffSet = size * (positionUsesAnchorPoint ? self.GetCurrentProperty(Actor::Property::ANCHOR_POINT) : AnchorPoint::TOP_LEFT); Vector2 position = Vector2((screenPosition.x - anchorPointOffSet.x), (screenPosition.y - anchorPointOffSet.y)); - return {position.x, position.y, size.x, size.y}; + if(type == Dali::Accessibility::CoordinateType::WINDOW) + { + return {position.x, position.y, size.x, size.y}; + } + else // Dali::Accessibility::CoordinateType::SCREEN + { + auto window = Dali::DevelWindow::Get(self); + auto windowPosition = window.GetPosition(); + return {position.x + windowPosition.GetX(), position.y + windowPosition.GetY(), size.x, size.y}; + } } int16_t AccessibleImpl::GetMdiZOrder()