application.ProcessEvent(GenerateSingleTouch(PointState::FINISHED, Vector2(110.0f, 110.0f)));
DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION);
DALI_TEST_EQUALS(data.receivedTouch.GetPoint(0).state, PointState::FINISHED, TEST_LOCATION);
+ data.Reset();
+
+ // Emit a down outside of actor, we should not receive the event
+ application.ProcessEvent(GenerateSingleTouch(PointState::STARTED, Vector2(110.0f, 110.0f)));
+ DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION);
+ data.Reset();
+
+ // Now motion inside of actor, we should not receive the event, Because the touchdown didn't happen inside the actor.
+ application.ProcessEvent(GenerateSingleTouch(PointState::MOTION, Vector2(10.0f, 10.0f)));
+ DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION);
+ data.Reset();
+
+ // Up event, we should not receive the event, Because the touchdown didn't happen inside the actor.
+ application.ProcessEvent(GenerateSingleTouch(PointState::FINISHED, Vector2(110.0f, 110.0f)));
+ DALI_TEST_EQUALS(false, data.functorCalled, TEST_LOCATION);
+ data.Reset();
END_TEST;
}
}
}
+ // If CapturesAllTouchAfterStart() is true, it should be hit only after touchdown.
+ // If the touch moves after another actor has been touched so that the current actor is hit, it should behave as if it didn't hit.
+ if(actor.CapturesAllTouchAfterStart() && point.GetState() != PointState::STARTED)
+ {
+ haveHitActor = false;
+ }
+
// If the hit actor does not want to hit, the hit-test continues.
if(haveHitActor && hitCheck.ActorRequiresHitResultCheck(&actor, point, hitPointLocal, eventTime))
{