diff --git a/window_scene/session/host/src/scene_session.cpp b/window_scene/session/host/src/scene_session.cpp index 0e2db2ae870d594875e7b6be1ca29d41693c816b..522614b8159933915d7586c83bf13839ddeed1de 100644 --- a/window_scene/session/host/src/scene_session.cpp +++ b/window_scene/session/host/src/scene_session.cpp @@ -4392,6 +4392,9 @@ void SceneSession::UpdateWinRectForSystemBar(WSRect& rect) return; } auto sessionProperty = GetSessionProperty(); + if (sessionProperty->IsAdaptToDragScale()) { + return; + } float tmpPosY = 0.0; std::vector> statusBarVector; if (specificCallback_->onGetSceneSessionVectorByTypeAndDisplayId_) { diff --git a/window_scene/test/unittest/scene_session_test5.cpp b/window_scene/test/unittest/scene_session_test5.cpp index a0f51707437a28b7f5f1d33cc6e29490532b2e93..b5dffb7e6c95caf94ace6965b72251aba5c37be0 100644 --- a/window_scene/test/unittest/scene_session_test5.cpp +++ b/window_scene/test/unittest/scene_session_test5.cpp @@ -1057,6 +1057,10 @@ HWTEST_F(SceneSessionTest5, UpdateWinRectForSystemBar, TestSize.Level1) info.isSystem_ = false; sptr session = sptr::MakeSptr(info, nullptr); EXPECT_NE(session, nullptr); + sptr compatibleModeProperty = sptr::MakeSptr(); + EXPECT_NE(compatibleModeProperty, nullptr); + compatibleModeProperty->SetIsAdaptToDragScale(false); + session->property_->SetCompatibleModeProperty(compatibleModeProperty); sptr specificCallback = sptr::MakeSptr(); specificCallback->onGetSceneSessionVectorByTypeAndDisplayId_ = nullptr; @@ -1084,6 +1088,13 @@ HWTEST_F(SceneSessionTest5, UpdateWinRectForSystemBar, TestSize.Level1) WSRect rect2 = { 1, 2, 10, 8 }; session->GetLayoutController()->SetSessionRect(rect2); session->UpdateWinRectForSystemBar(rect); + + WSRect rect3 = { 1, 2, 10, 10 }; + compatibleModeProperty->SetIsAdaptToDragScale(true); + session->property_->SetCompatibleModeProperty(compatibleModeProperty); + session->GetLayoutController()->SetSessionRect(rect3); + session->UpdateWinRectForSystemBar(rect); + ASSERT_EQ(4, rect.height_); } /**