diff --git a/frameworks/core/pipeline_ng/pipeline_context.cpp b/frameworks/core/pipeline_ng/pipeline_context.cpp index 2170a32c68b65c7727f302dc9bc348d8430d1432..5167c95e0ca408f510549e24747d370c2c93742a 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 5652c57f1f960ee458bd82e58b5646b61199a332..8912b27278b79e3e79e92ed381a572ffe7f60a79 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