END_TEST;
}
-int UtcDaliTouchEventIntercept(void)
+int UtcDaliTouchEventIntercept01(void)
+{
+ TestApplication application;
+
+ Actor actor = Actor::New();
+ actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
+ actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ application.GetScene().Add(actor);
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Connect to actor's intercept touched signal
+ SignalData data;
+ TouchEventFunctor functor(data, false /* Do not consume */);
+ Dali::DevelActor::InterceptTouchedSignal(actor).Connect(&application, functor);
+
+ // Emit a down signal
+ application.ProcessEvent(GenerateSingleTouch(PointState::DOWN, Vector2(10.0f, 10.0f)));
+
+ // It should be able to receive touch events by registering only InterceptTouchEvent.
+ DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION);
+ DALI_TEST_EQUALS(PointState::DOWN, data.receivedTouch.points[0].state, TEST_LOCATION);
+ DALI_TEST_CHECK(actor == data.receivedTouch.points[0].hitActor);
+ DALI_TEST_CHECK(actor == data.touchedActor);
+ data.Reset();
+
+ END_TEST;
+}
+
+int UtcDaliTouchEventIntercept02(void)
{
TestApplication application;
{
bool IsActorHittable(Actor* actor) override
{
- return (actor->GetTouchRequired() || actor->IsTouchFocusable()) && // Does the Application or derived actor type require a touch event? or focusable by touch?
- actor->IsHittable(); // Is actor sensitive, visible and on the scene?
+ return (actor->GetTouchRequired() || actor->GetInterceptTouchRequired() || actor->IsTouchFocusable()) && // Does the Application or derived actor type require a touch event or a intercept touch event? or focusable by touch?
+ actor->IsHittable(); // Is actor sensitive, visible and on the scene?
}
bool DescendActorHierarchy(Actor* actor) override
if(rayTest.ActorTest(actor, rayOrigin, rayDir, hitPointLocal, distance))
{
// Calculate z coordinate value in Camera Space.
- const Matrix& viewMatrix = renderTask.GetCameraActor()->GetViewMatrix();
- const Vector4& hitDir = Vector4(rayDir.x * distance, rayDir.y * distance, rayDir.z * distance, 0.0f);
+ const Matrix& viewMatrix = renderTask.GetCameraActor()->GetViewMatrix();
+ const Vector4& hitDir = Vector4(rayDir.x * distance, rayDir.y * distance, rayDir.z * distance, 0.0f);
const float cameraDepthDistance = (viewMatrix * hitDir).z;
// Check if cameraDepthDistance is between clipping plane