From 7a47aab3f240fe452e82e70da3f67925811f4f4d Mon Sep 17 00:00:00 2001 From: wangweiyuan Date: Sat, 31 May 2025 19:15:31 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=85=A8=E5=B1=80=E5=9D=90=E6=A0=87?= =?UTF-8?q?=E7=B3=BB=E9=80=82=E9=85=8D=E2=80=94=E2=80=94=E6=89=8B=E5=8A=BF?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangweiyuan --- .../engine/functions/js_gesture_function.cpp | 3 +++ .../gestures/recognizers/multi_fingers_recognizer.cpp | 2 +- frameworks/core/gestures/gesture_info.h | 1 + frameworks/core/gestures/multi_fingers_recognizer.cpp | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/engine/functions/js_gesture_function.cpp b/frameworks/bridge/declarative_frontend/engine/functions/js_gesture_function.cpp index 4e6b827827c..b1621a64525 100644 --- a/frameworks/bridge/declarative_frontend/engine/functions/js_gesture_function.cpp +++ b/frameworks/bridge/declarative_frontend/engine/functions/js_gesture_function.cpp @@ -138,6 +138,7 @@ JSRef JsGestureFunction::CreateFingerInfo(const FingerInfo& fingerInfo const OHOS::Ace::Offset& globalLocation = fingerInfo.globalLocation_; const OHOS::Ace::Offset& localLocation = fingerInfo.localLocation_; const OHOS::Ace::Offset& screenLocation = fingerInfo.screenLocation_; + const OHOS::Ace::Offset& globalDisplayLocation = fingerInfo.globalDisplayLocation_; fingerInfoObj->SetProperty("id", fingerInfo.fingerId_); fingerInfoObj->SetProperty("hand", fingerInfo.operatingHand_); fingerInfoObj->SetProperty("globalX", PipelineBase::Px2VpWithCurrentDensity(globalLocation.GetX())); @@ -146,6 +147,8 @@ JSRef JsGestureFunction::CreateFingerInfo(const FingerInfo& fingerInfo fingerInfoObj->SetProperty("localY", PipelineBase::Px2VpWithCurrentDensity(localLocation.GetY())); fingerInfoObj->SetProperty("displayX", PipelineBase::Px2VpWithCurrentDensity(screenLocation.GetX())); fingerInfoObj->SetProperty("displayY", PipelineBase::Px2VpWithCurrentDensity(screenLocation.GetY())); + fingerInfoObj->SetProperty("globalDisplayX", PipelineBase::Px2VpWithCurrentDensity(globalDisplayLocation.GetX())); + fingerInfoObj->SetProperty("globalDisplayY", PipelineBase::Px2VpWithCurrentDensity(globalDisplayLocation.GetY())); return fingerInfoObj; } diff --git a/frameworks/core/components_ng/gestures/recognizers/multi_fingers_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/multi_fingers_recognizer.cpp index 56b5ea4178c..3afc8c615ee 100644 --- a/frameworks/core/components_ng/gestures/recognizers/multi_fingers_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/multi_fingers_recognizer.cpp @@ -73,7 +73,7 @@ void MultiFingersRecognizer::UpdateFingerListInfo() localPoint, GetAttachedNode(), false, isPostEventResult_, point.second.postEventNodeId); FingerInfo fingerInfo = { point.second.GetOriginalReCovertId(), point.second.operatingHand, point.second.GetOffset(), Offset(localPoint.GetX(), localPoint.GetY()), - point.second.GetScreenOffset(), point.second.sourceType, point.second.sourceTool }; + point.second.GetScreenOffset(), point.second.GetGlobalDisplayOffset(), point.second.sourceType, point.second.sourceTool }; fingerList_.emplace_back(fingerInfo); if (maxTimeStamp <= point.second.GetTimeStamp().time_since_epoch().count() && point.second.pointers.size() >= touchPoints_.size()) { diff --git a/frameworks/core/gestures/gesture_info.h b/frameworks/core/gestures/gesture_info.h index 57529981eb1..982c51dc7ca 100644 --- a/frameworks/core/gestures/gesture_info.h +++ b/frameworks/core/gestures/gesture_info.h @@ -274,6 +274,7 @@ struct FingerInfo { //screen position at which the touch point contacts the screen. Offset screenLocation_; + Offset globalDisplayLocation_; SourceType sourceType_ = SourceType::NONE; SourceTool sourceTool_ = SourceTool::UNKNOWN; }; diff --git a/frameworks/core/gestures/multi_fingers_recognizer.cpp b/frameworks/core/gestures/multi_fingers_recognizer.cpp index 61b04afd8e5..51bcbc35c6a 100644 --- a/frameworks/core/gestures/multi_fingers_recognizer.cpp +++ b/frameworks/core/gestures/multi_fingers_recognizer.cpp @@ -78,7 +78,7 @@ void MultiFingersRecognizer::SetFingerList(const std::map t for (auto& point : touchPoints) { Offset localLocation = point.second.GetOffset() - coordinateOffset; FingerInfo fingerInfo = { point.first, point.second.operatingHand, point.second.GetOffset(), - localLocation, {} }; + localLocation, {}, point.second.getGlobalDisplayOffset() }; fingerList.emplace_back(fingerInfo); } } -- Gitee From a7a0d10d6794e422cc3cbbf2d5dd2227b3bd7e5e Mon Sep 17 00:00:00 2001 From: wangweiyuan Date: Sun, 1 Jun 2025 17:31:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A1=A5=E5=85=85modifier=E6=B6=89?= =?UTF-8?q?=E5=8F=8A=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangweiyuan --- .../arkts_native_common_bridge.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_common_bridge.cpp b/frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_common_bridge.cpp index ad8c55770be..a51cde78c69 100644 --- a/frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_common_bridge.cpp +++ b/frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_common_bridge.cpp @@ -7378,7 +7378,9 @@ Local CommonBridge::CreateTapGestureInfo(EcmaVM* vm, GestureEv const OHOS::Ace::Offset& localLocation = fingerInfo.localLocation_; const OHOS::Ace::Offset& globalLocation = fingerInfo.globalLocation_; const OHOS::Ace::Offset& screenLocation = fingerInfo.screenLocation_; - const char* keys[] = { "x", "y", "windowX", "windowY", "displayX", "displayY"}; + const OHOS::Ace::Offset& globalDisplayLocation = fingerInfo.globalDisplayLocation_; + const char* keys[] = { "x", "y", "windowX", "windowY", "displayX", "displayY", + "globalDisplayX", "globalDisplayY"}; Local values[] = { panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(localLocation.GetX())), panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(localLocation.GetY())), @@ -7386,6 +7388,8 @@ Local CommonBridge::CreateTapGestureInfo(EcmaVM* vm, GestureEv panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(globalLocation.GetY())), panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(screenLocation.GetX())), panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(screenLocation.GetY())), + panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(globalDisplayLocation.GetX())), + panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(globalDisplayLocation.GetY())), }; return panda::ObjectRef::NewWithNamedProperties(vm, ArraySize(keys), keys, values); } @@ -7469,8 +7473,10 @@ Local CommonBridge::CreateFingerInfo(EcmaVM* vm, const FingerI const OHOS::Ace::Offset& globalLocation = fingerInfo.globalLocation_; const OHOS::Ace::Offset& localLocation = fingerInfo.localLocation_; const OHOS::Ace::Offset& screenLocation = fingerInfo.screenLocation_; + const OHOS::Ace::Offset& globalDisplayLocation = fingerInfo.globalDisplayLocation_; double density = PipelineBase::GetCurrentDensity(); - const char* keys[] = { "id", "globalX", "globalY", "localX", "localY", "displayX", "displayY", "hand" }; + const char* keys[] = { "id", "globalX", "globalY", "localX", "localY", "displayX", "displayY", + "globalDisplayX", "globalDisplayY", "hand" }; Local values[] = { panda::NumberRef::New(vm, fingerInfo.fingerId_), panda::NumberRef::New(vm, globalLocation.GetX() / density), panda::NumberRef::New(vm, globalLocation.GetY() / density), @@ -7478,6 +7484,8 @@ Local CommonBridge::CreateFingerInfo(EcmaVM* vm, const FingerI panda::NumberRef::New(vm, localLocation.GetY() / density), panda::NumberRef::New(vm, screenLocation.GetX() / density), panda::NumberRef::New(vm, screenLocation.GetY() / density), + panda::NumberRef::New(vm, globalDisplayLocation.GetX() / density), + panda::NumberRef::New(vm, globalDisplayLocation.GetY() / density), panda::NumberRef::New(vm, fingerInfo.operatingHand_) }; return panda::ObjectRef::NewWithNamedProperties(vm, ArraySize(keys), keys, values); } @@ -9048,8 +9056,10 @@ Local CommonBridge::CreateTapGestureLocationInfo( const OHOS::Ace::Offset& localLocation = fingerInfo.localLocation_; const OHOS::Ace::Offset& globalLocation = fingerInfo.globalLocation_; const OHOS::Ace::Offset& screenLocation = fingerInfo.screenLocation_; + const OHOS::Ace::Offset& globalDisplayLocation = fingerInfo.globalDisplayLocation_; double density = PipelineBase::GetCurrentDensity(); - const char* keys[] = { "x", "y", "windowX", "windowY", "displayX", "displayY"}; + const char* keys[] = { "x", "y", "windowX", "windowY", "displayX", "displayY", + "globalDisplayX", "globalDisplayY"}; density = density != 0 ? density : 1; Local values[] = { panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(localLocation.GetX())), @@ -9058,6 +9068,8 @@ Local CommonBridge::CreateTapGestureLocationInfo( panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(globalLocation.GetY())), panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(screenLocation.GetX())), panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(screenLocation.GetY())), + panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(globalDisplayLocation.GetX())), + panda::NumberRef::New(vm, PipelineBase::Px2VpWithCurrentDensity(globalDisplayLocation.GetY())), }; return panda::ObjectRef::NewWithNamedProperties(vm, ArraySize(keys), keys, values); } -- Gitee