From: joogab.yun Date: Thu, 22 May 2025 01:06:58 +0000 (+0900) Subject: [GestureDetector] NeedGesturePropagation is a value that is set after the event is... X-Git-Tag: dali_2.4.21~3^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aa7b9d5f1c1341c5fbcb993d0298b88cbe6240f3;p=platform%2Fcore%2Fuifw%2Fdali-core.git [GestureDetector] NeedGesturePropagation is a value that is set after the event is received, so it must be initialized when the gesture starts. Change-Id: I9c2bbc749895503103a7c5920b785a8720bf1d68 --- diff --git a/automated-tests/src/dali/utc-Dali-LongPressGestureDetector.cpp b/automated-tests/src/dali/utc-Dali-LongPressGestureDetector.cpp index 31262cfb0..a771b56a3 100644 --- a/automated-tests/src/dali/utc-Dali-LongPressGestureDetector.cpp +++ b/automated-tests/src/dali/utc-Dali-LongPressGestureDetector.cpp @@ -51,6 +51,7 @@ struct SignalData SignalData() : functorCalled(false), voidFunctorCalled(false), + needGesturePropagation(false), receivedGesture(), pressedActor() { @@ -60,7 +61,7 @@ struct SignalData { functorCalled = false; voidFunctorCalled = false; - + needGesturePropagation = false; receivedGesture.Reset(); pressedActor.Reset(); @@ -68,6 +69,7 @@ struct SignalData bool functorCalled; bool voidFunctorCalled; + bool needGesturePropagation; LongPressGesture receivedGesture; Actor pressedActor; }; @@ -85,6 +87,10 @@ struct GestureReceivedFunctor signalData.functorCalled = true; signalData.receivedGesture = longPress; signalData.pressedActor = actor; + if (signalData.needGesturePropagation) + { + Dali::DevelActor::SetNeedGesturePropagation(actor, true); + } } void operator()() @@ -1125,7 +1131,7 @@ int UtcDaliLongPressGestureWhenGesturePropargation(void) pData.Reset(); // If GesturePropargation is set, a gesture event is to pass over to the parent. - Dali::DevelActor::SetNeedGesturePropagation(childActor, true); + cData.needGesturePropagation = true; // So now the parent got the gesture event. TestGenerateLongPress(application, 50.0f, 50.0f); diff --git a/automated-tests/src/dali/utc-Dali-PanGestureDetector.cpp b/automated-tests/src/dali/utc-Dali-PanGestureDetector.cpp index 3c8314ccf..f24b82042 100644 --- a/automated-tests/src/dali/utc-Dali-PanGestureDetector.cpp +++ b/automated-tests/src/dali/utc-Dali-PanGestureDetector.cpp @@ -56,6 +56,7 @@ struct SignalData SignalData() : functorCalled(false), voidFunctorCalled(false), + needGesturePropagation(false), receivedGesture() { } @@ -64,7 +65,7 @@ struct SignalData { functorCalled = false; voidFunctorCalled = false; - + needGesturePropagation = false; receivedGesture.Reset(); pannedActor.Reset(); @@ -72,6 +73,7 @@ struct SignalData bool functorCalled; bool voidFunctorCalled; + bool needGesturePropagation; PanGesture receivedGesture; Actor pannedActor; }; @@ -89,6 +91,10 @@ struct GestureReceivedFunctor signalData.functorCalled = true; signalData.receivedGesture = pan; signalData.pannedActor = actor; + if (signalData.needGesturePropagation) + { + Dali::DevelActor::SetNeedGesturePropagation(actor, true); + } } void operator()() @@ -3048,7 +3054,7 @@ int UtcDaliPanGestureWhenGesturePropargation(void) pData.Reset(); // If GesturePropargation is set, a gesture event is to pass over to the parent. - Dali::DevelActor::SetNeedGesturePropagation(childActor, true); + cData.needGesturePropagation = true; // So now the parent got the gesture event. TestStartPan(application, Vector2(10.0f, 20.0f), Vector2(26.0f, 20.0f), time); diff --git a/automated-tests/src/dali/utc-Dali-PinchGestureDetector.cpp b/automated-tests/src/dali/utc-Dali-PinchGestureDetector.cpp index a6215f297..f17196548 100644 --- a/automated-tests/src/dali/utc-Dali-PinchGestureDetector.cpp +++ b/automated-tests/src/dali/utc-Dali-PinchGestureDetector.cpp @@ -49,6 +49,7 @@ struct SignalData SignalData() : functorCalled(false), voidFunctorCalled(false), + needGesturePropagation(false), receivedGesture() { } @@ -57,7 +58,7 @@ struct SignalData { functorCalled = false; voidFunctorCalled = false; - + needGesturePropagation = false; receivedGesture.Reset(); pinchedActor.Reset(); @@ -65,6 +66,7 @@ struct SignalData bool functorCalled; bool voidFunctorCalled; + bool needGesturePropagation; PinchGesture receivedGesture; Actor pinchedActor; }; @@ -82,6 +84,10 @@ struct GestureReceivedFunctor signalData.functorCalled = true; signalData.receivedGesture = pinch; signalData.pinchedActor = actor; + if (signalData.needGesturePropagation) + { + Dali::DevelActor::SetNeedGesturePropagation(actor, true); + } } void operator()() @@ -1202,7 +1208,7 @@ int UtcDaliPinchGestureWhenGesturePropargation(void) pData.Reset(); // If GesturePropargation is set, a gesture event is to pass over to the parent. - Dali::DevelActor::SetNeedGesturePropagation(childActor, true); + cData.needGesturePropagation = true; // So now the parent got the gesture event. TestStartPinch(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 700); diff --git a/automated-tests/src/dali/utc-Dali-RotationGestureDetector.cpp b/automated-tests/src/dali/utc-Dali-RotationGestureDetector.cpp index f474ff7d7..94a94d38b 100644 --- a/automated-tests/src/dali/utc-Dali-RotationGestureDetector.cpp +++ b/automated-tests/src/dali/utc-Dali-RotationGestureDetector.cpp @@ -49,6 +49,7 @@ struct SignalData SignalData() : functorCalled(false), voidFunctorCalled(false), + needGesturePropagation(false), receivedGesture() { } @@ -57,7 +58,7 @@ struct SignalData { functorCalled = false; voidFunctorCalled = false; - + needGesturePropagation = false; receivedGesture.Reset(); rotatedActor.Reset(); @@ -65,6 +66,7 @@ struct SignalData bool functorCalled; bool voidFunctorCalled; + bool needGesturePropagation; RotationGesture receivedGesture; Actor rotatedActor; }; @@ -82,6 +84,10 @@ struct GestureReceivedFunctor signalData.functorCalled = true; signalData.receivedGesture = rotation; signalData.rotatedActor = actor; + if (signalData.needGesturePropagation) + { + Dali::DevelActor::SetNeedGesturePropagation(actor, true); + } } void operator()() @@ -1178,7 +1184,7 @@ int UtcDaliRotationGestureWhenGesturePropargation(void) pData.Reset(); // If GesturePropargation is set, a gesture event is to pass over to the parent. - Dali::DevelActor::SetNeedGesturePropagation(childActor, true); + cData.needGesturePropagation = true; // So now the parent got the gesture event. TestStartRotation(application, Vector2(2.0f, 20.0f), Vector2(38.0f, 20.0f), Vector2(10.0f, 20.0f), Vector2(30.0f, 20.0f), 700); diff --git a/automated-tests/src/dali/utc-Dali-TapGestureDetector.cpp b/automated-tests/src/dali/utc-Dali-TapGestureDetector.cpp index d09d3f6e1..927c060ae 100644 --- a/automated-tests/src/dali/utc-Dali-TapGestureDetector.cpp +++ b/automated-tests/src/dali/utc-Dali-TapGestureDetector.cpp @@ -55,7 +55,8 @@ struct SignalData { SignalData() : functorCalled(false), - voidFunctorCalled(false) + voidFunctorCalled(false), + needGesturePropagation(false) { } @@ -63,7 +64,7 @@ struct SignalData { functorCalled = false; voidFunctorCalled = false; - + needGesturePropagation = false; receivedGesture.Reset(); tappedActor.Reset(); @@ -71,6 +72,7 @@ struct SignalData bool functorCalled; bool voidFunctorCalled; + bool needGesturePropagation; TapGesture receivedGesture; Actor tappedActor; }; @@ -88,6 +90,10 @@ struct GestureReceivedFunctor signalData.functorCalled = true; signalData.receivedGesture = tap; signalData.tappedActor = actor; + if (signalData.needGesturePropagation) + { + Dali::DevelActor::SetNeedGesturePropagation(actor, true); + } } void operator()() @@ -1066,7 +1072,7 @@ int UtcDaliTapGestureWhenGesturePropargation(void) pData.Reset(); // If GesturePropargation is set, a gesture event is delivered to the parent. - Dali::DevelActor::SetNeedGesturePropagation(childActor, true); + cData.needGesturePropagation = true; // So now the parent got the gesture event. TestGenerateTap(application, 50.0f, 50.0f, 700); diff --git a/dali/internal/event/events/gesture-processor.cpp b/dali/internal/event/events/gesture-processor.cpp index 4a6b247f7..f7538c33a 100644 --- a/dali/internal/event/events/gesture-processor.cpp +++ b/dali/internal/event/events/gesture-processor.cpp @@ -152,6 +152,7 @@ void GestureProcessor::ProcessAndEmit(HitTestAlgorithm::Results& hitTestResults) if(actor == hitTestActor) { + actor->SetNeedGesturePropagation(false); // Our gesture detector's attached actor WAS the hit actor so we can can emit the signal. EmitGestureSignal(actor, gestureDetectors, hitTestResults.actorCoordinates); // If NeedGesturePropagation is true, it passes the gesture to the parent. @@ -159,7 +160,6 @@ void GestureProcessor::ProcessAndEmit(HitTestAlgorithm::Results& hitTestResults) { break; // We have found AND emitted a signal on the gestured actor, break out. } - actor->SetNeedGesturePropagation(false); } else { @@ -176,6 +176,7 @@ void GestureProcessor::ProcessAndEmit(HitTestAlgorithm::Results& hitTestResults) float distance(0.0f); if(RayTest::ActorTest(*actor, hitTestResults.rayOrigin, hitTestResults.rayDirection, hitPointLocal, distance)) { + actor->SetNeedGesturePropagation(false); // One of the parents was the gestured actor so we can emit the signal for that actor. EmitGestureSignal(actor, gestureDetectors, hitPointLocal); // If NeedGesturePropagation is true, it passes the gesture to the parent. @@ -183,7 +184,6 @@ void GestureProcessor::ProcessAndEmit(HitTestAlgorithm::Results& hitTestResults) { break; // We have found AND emitted a signal on the gestured actor, break out. } - actor->SetNeedGesturePropagation(false); } } }