From 55300d9d842bd1657c7c0544a249221d240aa25b Mon Sep 17 00:00:00 2001 From: wangweiyuan Date: Thu, 19 Jun 2025 14:27:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20post=E5=9C=BA=E6=99=AF=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?Dispatch=E5=9D=90=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangweiyuan --- .../core/pipeline_ng/pipeline_context.cpp | 10 ++++++++-- .../pipeline/pipeline_context_test_ng_two.cpp | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/frameworks/core/pipeline_ng/pipeline_context.cpp b/frameworks/core/pipeline_ng/pipeline_context.cpp index 2170a32c68b..5167c95e0ca 100755 --- a/frameworks/core/pipeline_ng/pipeline_context.cpp +++ b/frameworks/core/pipeline_ng/pipeline_context.cpp @@ -3874,8 +3874,14 @@ void PipelineContext::DispatchMouseToTouchEvent(const MouseEvent& event, const R } else { auto touchPoint = event.CreateTouchPoint(); auto scalePoint = touchPoint.CreateScalePoint(GetViewScale()); - auto rootOffset = GetRootRect().GetOffset(); - eventManager_->HandleGlobalEventNG(scalePoint, selectOverlayManager_, rootOffset); + NG::OffsetF offset; + auto geometryNode = node->GetGeometryNode(); + if (event.passThrough && geometryNode) { + offset = geometryNode->GetFrameRect().GetOffset(); + } else { + offset = GetRootRect().GetOffset(); + } + eventManager_->HandleGlobalEventNG(scalePoint, selectOverlayManager_, offset); } } diff --git a/test/unittest/core/pipeline/pipeline_context_test_ng_two.cpp b/test/unittest/core/pipeline/pipeline_context_test_ng_two.cpp index 5652c57f1f9..8912b27278b 100644 --- a/test/unittest/core/pipeline/pipeline_context_test_ng_two.cpp +++ b/test/unittest/core/pipeline/pipeline_context_test_ng_two.cpp @@ -2466,5 +2466,22 @@ HWTEST_F(PipelineContextTestNg, PipelineContextTestNg403, TestSize.Level1) context_->NotifyColorModeChange(colorMode); EXPECT_EQ(context_->instanceId_, Container::CurrentIdSafely()); } + +/** + * @tc.name: PipelineContextTestNg404 + * @tc.desc: Test the function NotifyColorModeChange. + * @tc.type: FUNC + */ +HWTEST_F(PipelineContextTestNg, PipelineContextTestNg404, TestSize.Level1) +{ + ASSERT_NE(context_, nullptr); + context_->SetupRootElement(); + auto node = FrameNode::GetOrCreateFrameNode(TEST_TAG, frameNodeId_, nullptr); + ASSERT_NE(node, nullptr); + MouseEvent mouseEvent; + mouseEvent.action = MouseAction::HOVER; + context_->DispatchMouseToTouchEvent(mouseEvent, node); + EXPECT_TRUE(context_->eventManager_->touchTestResults_.empty()); +} } // namespace NG } // namespace OHOS::Ace -- Gitee