case GestureState::STARTED:
{
- Actor* currentGesturedActor = GetCurrentGesturedActor();
- if(currentGesturedActor)
+ if(GetCurrentGesturedActor())
{
HitTestAlgorithm::Results hitTestResults;
- if(GetFeededActor())
+ Actor* feededActor = GetFeededActor();
+ if(feededActor)
{
- hitTestResults.actor = Dali::Actor(GetFeededActor());
+ SetActor(feededActor);
+ hitTestResults.actor = Dali::Actor(feededActor);
hitTestResults.renderTask = GetFeededRenderTask();
Vector2 actorCoords;
- currentGesturedActor->ScreenToLocal(*hitTestResults.renderTask.Get(), actorCoords.x, actorCoords.y, longPressEvent.point.x, longPressEvent.point.y);
+ feededActor->ScreenToLocal(*hitTestResults.renderTask.Get(), actorCoords.x, actorCoords.y, longPressEvent.point.x, longPressEvent.point.y);
hitTestResults.actorCoordinates = actorCoords;
}
else
HitTest(scene, longPressEvent.point, hitTestResults);
}
- if(hitTestResults.actor && (currentGesturedActor == &GetImplementation(hitTestResults.actor)))
+ if(hitTestResults.actor && (GetCurrentGesturedActor() == &GetImplementation(hitTestResults.actor)))
{
// Record the current render-task for Screen->Actor coordinate conversions
mCurrentRenderTask = hitTestResults.renderTask;
// Set mCurrentLongPressEvent to use inside overridden methods called from ProcessAndEmit()
mCurrentLongPressEvent = &longPressEvent;
- if(GetFeededActor())
+ if(feededActor)
{
ProcessAndEmitActor(hitTestResults, GetFeededGestureDetector());
}
// Ensure actor is still attached to the emitters, if it is not then remove the emitter.
GestureDetectorContainer::iterator endIter = std::remove_if(mCurrentEmitters.begin(), mCurrentEmitters.end(), IsNotAttachedFunctor(currentGesturedActor));
mCurrentEmitters.erase(endIter, mCurrentEmitters.end());
- if(GetFeededGestureDetector())
- {
- mCurrentEmitters.push_back(GetFeededGestureDetector());
- }
+
if(!mCurrentEmitters.empty())
{
Vector2 actorCoords;
{
GestureDetectorContainer outsideTouchesRangeEmitters;
- if(!(GetFeededActor() && GetFeededGestureDetector()))
- {
- // Removes emitters that no longer have the actor attached
- // Also remove emitters whose touches are outside the range of the current pan event and add them to outsideTouchesRangeEmitters
- GestureDetectorContainer::iterator endIter = std::remove_if(mCurrentPanEmitters.begin(), mCurrentPanEmitters.end(), IsNotAttachedAndOutsideTouchesRangeFunctor(currentGesturedActor, panEvent.numberOfTouches, outsideTouchesRangeEmitters));
- mCurrentPanEmitters.erase(endIter, mCurrentPanEmitters.end());
- }
+ // Removes emitters that no longer have the actor attached
+ // Also remove emitters whose touches are outside the range of the current pan event and add them to outsideTouchesRangeEmitters
+ GestureDetectorContainer::iterator endIter = std::remove_if(mCurrentPanEmitters.begin(), mCurrentPanEmitters.end(), IsNotAttachedAndOutsideTouchesRangeFunctor(currentGesturedActor, panEvent.numberOfTouches, outsideTouchesRangeEmitters));
+ mCurrentPanEmitters.erase(endIter, mCurrentPanEmitters.end());
Vector2 actorCoords;
if(!outsideTouchesRangeEmitters.empty() || !mCurrentPanEmitters.empty())