LongPressGestureProcessor::~LongPressGestureProcessor() = default;
-void LongPressGestureProcessor::Process(Scene& scene, const LongPressGestureEvent& longPressEvent, Actor* actor)
+void LongPressGestureProcessor::Process(Scene& scene, const LongPressGestureEvent& longPressEvent)
{
DALI_TRACE_SCOPE(gTraceFilter, "DALI_PROCESS_LONG_PRESS_GESTURE");
switch(longPressEvent.state)
ResetActor();
HitTestAlgorithm::Results hitTestResults;
- if(actor)
+ if(GetFeededActor())
{
- SetActor(actor);
+ SetActor(GetFeededActor());
}
else if(HitTest(scene, longPressEvent.point, hitTestResults))
{
case GestureState::STARTED:
{
- Actor* currentGesturedActor = GetCurrentGesturedActor();
- if(currentGesturedActor)
+ if(GetCurrentGesturedActor())
{
HitTestAlgorithm::Results hitTestResults;
- if(actor)
+ Actor* feededActor = GetFeededActor();
+ if(feededActor)
{
- hitTestResults.actor = Dali::Actor(actor);
- hitTestResults.renderTask = longPressEvent.renderTask;
+ 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(actor)
+ if(feededActor)
{
- ProcessAndEmitActor(hitTestResults);
+ ProcessAndEmitActor(hitTestResults, GetFeededGestureDetector());
}
else
{
// Only send subsequent long press gesture signals if we processed the gesture when it started.
// Check if actor is still touchable.
-
Actor* currentGesturedActor = GetCurrentGesturedActor();
if(currentGesturedActor)
{