DragSignalFunctor functor(data);
detector.StartedSignal().Connect(&application, functor);
- Vector2 screenCoordinates(10.0f, 10.0f);
- application.ProcessEvent(GenerateSingleTouch(TouchPoint::Down, screenCoordinates));
+ application.ProcessEvent(GeneratePan(Gesture::Possible, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
+ application.ProcessEvent(GeneratePan(Gesture::Started, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION);
DALI_TEST_EQUALS(control, data.control, TEST_LOCATION);
- DALI_TEST_EQUALS(Vector2(10.0f, 10.0f), data.detector.GetCurrentScreenPosition(), TEST_LOCATION);
+ DALI_TEST_EQUALS(Vector2(12.0f, 12.0f), data.detector.GetCurrentScreenPosition(), TEST_LOCATION);
data.Reset();
END_TEST;
DragSignalFunctor functor(data);
detector.EnteredSignal().Connect(&application, functor);
- Vector2 screenCoordinates(10.0f, 10.0f);
- application.ProcessEvent(GenerateSingleTouch(TouchPoint::Down, screenCoordinates));
+ application.ProcessEvent(GeneratePan(Gesture::Possible, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
+ application.ProcessEvent(GeneratePan(Gesture::Started, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
- screenCoordinates.x = 10.0f;
- screenCoordinates.y = 110.0f;
+ Vector2 screenCoordinates(10.0f, 110.0f);
application.ProcessEvent(GenerateSingleTouch(TouchPoint::Motion, screenCoordinates));
DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION);
DragSignalFunctor functor(data);
detector.MovedSignal().Connect(&application, functor);
- Vector2 screenCoordinates(10.0f, 10.0f);
- application.ProcessEvent(GenerateSingleTouch(TouchPoint::Down, screenCoordinates));
+ application.ProcessEvent(GeneratePan(Gesture::Possible, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
+ application.ProcessEvent(GeneratePan(Gesture::Started, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
- screenCoordinates.x = 10.0f;
- screenCoordinates.y = 110.0f;
+ Vector2 screenCoordinates(10.0f, 110.0f);
application.ProcessEvent(GenerateSingleTouch(TouchPoint::Motion, screenCoordinates));
screenCoordinates.x = 10.0f;
DragSignalFunctor functor(data);
detector.ExitedSignal().Connect(&application, functor);
- Vector2 screenCoordinates(10.0f, 10.0f);
- application.ProcessEvent(GenerateSingleTouch(TouchPoint::Down, screenCoordinates));
+ application.ProcessEvent(GeneratePan(Gesture::Possible, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
+ application.ProcessEvent(GeneratePan(Gesture::Started, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
- screenCoordinates.x = 10.0f;
- screenCoordinates.y = 110.0f;
+ Vector2 screenCoordinates(10.0f, 110.0f);
application.ProcessEvent(GenerateSingleTouch(TouchPoint::Motion, screenCoordinates));
screenCoordinates.x = 20.0f;
DragSignalFunctor functor(data);
detector.DroppedSignal().Connect(&application, functor);
- Vector2 screenCoordinates(10.0f, 10.0f);
- application.ProcessEvent(GenerateSingleTouch(TouchPoint::Down, screenCoordinates));
+ application.ProcessEvent(GeneratePan(Gesture::Possible, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
+ application.ProcessEvent(GeneratePan(Gesture::Started, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
- screenCoordinates.x = 10.0f;
- screenCoordinates.y = 110.0f;
+ Vector2 screenCoordinates(10.0f, 110.0f);
application.ProcessEvent(GenerateSingleTouch(TouchPoint::Motion, screenCoordinates));
screenCoordinates.x = 10.0f;
DragSignalFunctor functor(data);
detector.DroppedSignal().Connect(&application, functor);
- Vector2 screenCoordinates(10.0f, 10.0f);
- application.ProcessEvent(GenerateSingleTouch(TouchPoint::Down, screenCoordinates));
+ application.ProcessEvent(GeneratePan(Gesture::Possible, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
+ application.ProcessEvent(GeneratePan(Gesture::Started, Vector2(10.0f, 10.0f), Vector2(12.0f, 12.0f), 10));
- screenCoordinates.x = 10.0f;
- screenCoordinates.y = 110.0f;
+ Vector2 screenCoordinates(10.0f, 110.0f);
application.ProcessEvent(GenerateSingleTouch(TouchPoint::Motion, screenCoordinates));
screenCoordinates.x = 10.0f;
if(gesture.state == Gesture::Started)
{
mDragLocalPosition = gesture.position;
- }
- if(gesture.state == Gesture::Continuing)
- {
- Vector2 screenPosition = gesture.screenPosition;
- control.GetParent().ScreenToLocal(mLocalPosition.x, mLocalPosition.y, screenPosition.x, screenPosition.y);
- mShadowControl.SetPosition(mLocalPosition.x - mDragLocalPosition.x, mLocalPosition.y - mDragLocalPosition.y);
- }
- if(gesture.state == Gesture::Finished)
- {
- mDragControl.GetParent().Remove(mShadowControl);
- EmitEndedSignal(control);
- }
-}
-
-bool DragAndDropDetector::OnDrag(Dali::Actor actor, const Dali::TouchData& data)
-{
- Dali::Toolkit::Control control = Dali::Toolkit::Control::DownCast(actor);
- PointState::Type type = data.GetState(0);
- if(type == PointState::DOWN)
- {
mPointDown = true;
mDragControl = control;
mFirstEnter.clear();
mShadowControl.SetParentOrigin(control.GetCurrentParentOrigin());
mShadowControl.SetAnchorPoint(control.GetCurrentAnchorPoint());
control.GetParent().Add(mShadowControl);
- SetPosition(data.GetScreenPosition(0));
+ SetPosition(gesture.screenPosition);
EmitStartedSignal(control);
}
+ if(gesture.state == Gesture::Continuing)
+ {
+ Vector2 screenPosition = gesture.screenPosition;
+ control.GetParent().ScreenToLocal(mLocalPosition.x, mLocalPosition.y, screenPosition.x, screenPosition.y);
+ mShadowControl.SetPosition(mLocalPosition.x - mDragLocalPosition.x, mLocalPosition.y - mDragLocalPosition.y);
+ }
+ if(gesture.state == Gesture::Finished)
+ {
+ mDragControl.GetParent().Remove(mShadowControl);
+ EmitEndedSignal(control);
+ }
+}
+
+bool DragAndDropDetector::OnDrag(Dali::Actor actor, const Dali::TouchData& data)
+{
+ Dali::Toolkit::Control control = Dali::Toolkit::Control::DownCast(actor);
+ PointState::Type type = data.GetState(0);
if(type == PointState::MOTION)
{