From c08fe605ed2b9fbcf1687dc4edc2288b384ec14f Mon Sep 17 00:00:00 2001 From: zenix_zxy Date: Wed, 16 Oct 2024 04:02:29 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=AB=98=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E5=A4=9A=E9=80=89pan=E6=89=8B=E5=8A=BF=E4=B8=8D=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zenix_zxy Change-Id: Ide937838fab0cbda1325c83bbb1e148bcc4b1f67 --- frameworks/core/components_ng/event/drag_event.cpp | 1 + .../gestures/recognizers/sequenced_recognizer.cpp | 3 ++- .../gestures/recognizers/sequenced_recognizer.h | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/frameworks/core/components_ng/event/drag_event.cpp b/frameworks/core/components_ng/event/drag_event.cpp index 9416e2ba817..8a6fbf7327c 100644 --- a/frameworks/core/components_ng/event/drag_event.cpp +++ b/frameworks/core/components_ng/event/drag_event.cpp @@ -769,6 +769,7 @@ void DragEventActuator::OnCollectTouchTarget(const OffsetF& coordinateOffset, co SequencedRecognizer_->SetCoordinateOffset(Offset(coordinateOffset.GetX(), coordinateOffset.GetY())); SequencedRecognizer_->SetOnActionCancel(actionCancel); SequencedRecognizer_->SetGetEventTargetImpl(getEventTargetImpl); + SequencedRecognizer_->SetIsEventHandoverNeeded(true); result.emplace_back(SequencedRecognizer_); result.emplace_back(previewLongPressRecognizer_); } diff --git a/frameworks/core/components_ng/gestures/recognizers/sequenced_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/sequenced_recognizer.cpp index 28f192cb541..02f08eba166 100644 --- a/frameworks/core/components_ng/gestures/recognizers/sequenced_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/sequenced_recognizer.cpp @@ -235,7 +235,8 @@ void SequencedRecognizer::UpdateCurrentIndex() } currentIndex_++; // if the sequence recognizer between long press recognizer, auto send to next event. - if (inputEventType_ == InputEventType::MOUSE_BUTTON && CheckBetweenTwoLongPressRecognizer(currentIndex_)) { + if (isEventHandoverNeeded_ || + (inputEventType_ == InputEventType::MOUSE_BUTTON && CheckBetweenTwoLongPressRecognizer(currentIndex_))) { auto duration = 0; auto iter = recognizers_.begin(); std::advance(iter, currentIndex_ - 1); diff --git a/frameworks/core/components_ng/gestures/recognizers/sequenced_recognizer.h b/frameworks/core/components_ng/gestures/recognizers/sequenced_recognizer.h index 350b1ffbcba..b3fdd01db17 100644 --- a/frameworks/core/components_ng/gestures/recognizers/sequenced_recognizer.h +++ b/frameworks/core/components_ng/gestures/recognizers/sequenced_recognizer.h @@ -48,6 +48,10 @@ public: void CleanRecognizerState() override; void ForceCleanRecognizer() override; + void SetIsEventHandoverNeeded(bool isEventHandoverNeeded) + { + isEventHandoverNeeded_ = isEventHandoverNeeded; + } private: void HandleTouchDownEvent(const TouchEvent& event) override {}; @@ -65,6 +69,7 @@ private: void SendTouchEventToNextRecognizer(const RefPtr curRecognizer, int64_t beforeDuration = 0); bool CheckBetweenTwoLongPressRecognizer(int32_t currentIndex = 0); + bool isEventHandoverNeeded_ = false; int32_t currentIndex_ = 0; AxisEvent lastAxisEvent_; std::list childTouchTestList_;