From c4f66fef40f80f89a4492a66c577623e1886fe91 Mon Sep 17 00:00:00 2001 From: jingbotao Date: Fri, 12 Sep 2025 15:22:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=AA=97=E5=8F=A3=E9=BB=98?= =?UTF-8?q?=E8=AE=A4limits=E4=B8=8B=E9=99=90=E5=80=BC=E4=B8=BA1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jingbotao --- wm/src/window_scene_session_impl.cpp | 6 +- .../window_scene_session_impl_test5.cpp | 57 +++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/wm/src/window_scene_session_impl.cpp b/wm/src/window_scene_session_impl.cpp index 793fd300ec..58ce4a2a6a 100644 --- a/wm/src/window_scene_session_impl.cpp +++ b/wm/src/window_scene_session_impl.cpp @@ -1408,8 +1408,10 @@ void WindowSceneSessionImpl::CalculateNewLimitsByLimits( customizedLimits = property_->GetConfigWindowLimitsVP(); customizedLimits.maxWidth_ = static_cast(customizedLimits.maxWidth_ * virtualPixelRatio); customizedLimits.maxHeight_ = static_cast(customizedLimits.maxHeight_ * virtualPixelRatio); - customizedLimits.minWidth_ = static_cast(customizedLimits.minWidth_ * virtualPixelRatio); - customizedLimits.minHeight_ = static_cast(customizedLimits.minHeight_ * virtualPixelRatio); + if (!WindowHelper::IsSystemWindow(GetType())) { + customizedLimits.minWidth_ = static_cast(customizedLimits.minWidth_ * virtualPixelRatio); + customizedLimits.minHeight_ = static_cast(customizedLimits.minHeight_ * virtualPixelRatio); + } } newLimits = systemLimits; uint32_t limitMinWidth = systemLimits.minWidth_; diff --git a/wm/test/unittest/window_scene_session_impl_test5.cpp b/wm/test/unittest/window_scene_session_impl_test5.cpp index a9dbacb3f8..a637973069 100644 --- a/wm/test/unittest/window_scene_session_impl_test5.cpp +++ b/wm/test/unittest/window_scene_session_impl_test5.cpp @@ -2274,6 +2274,63 @@ HWTEST_F(WindowSceneSessionImplTest5, UpdateImmersiveBySwitchMode, TestSize.Leve window->UpdateImmersiveBySwitchMode(false); EXPECT_EQ(window->enableImmersiveMode_, true); } + +/** + * @tc.name: CalculateNewLimitsByLimits + * @tc.desc: test function: CalculateNewLimitsByLimits + * @tc.type: FUNC + */ +HWTEST_F(WindowSceneSessionImplTest5, CalculateNewLimitsByLimits, TestSize.Level1) +{ + sptr option = sptr::MakeSptr(); + sptr testImpl = sptr::MakeSptr(option); + WindowLimits customizedLimits = {200, 200, 10, 10, 0.0f, 0.0f, 1.0f}; + WindowLimits expectLimits; + WindowLimits newLimits; + testImpl->property_->SetDisplayId(0); + testImpl->SetConfigWindowLimitsVP(customizedLimits); + + // set system limits + testImpl->windowSystemConfig_.maxFloatingWindowSize_ = 6240; + testImpl->windowSystemConfig_.miniWidthOfMainWindow_ = 1; + testImpl->windowSystemConfig_.miniHeightOfMainWindow_ = 1; + testImpl->windowSystemConfig_.miniWidthOfSubWindow_ = 1; + testImpl->windowSystemConfig_.miniHeightOfSubWindow_ = 1; + testImpl->windowSystemConfig_.miniWidthOfDialogWindow_ = 1; + testImpl->windowSystemConfig_.miniHeightOfDialogWindow_ = 1; + + // user set flag is false, window type is mian window + testImpl->userLimitsSet_ = false; + customizedLimits = {200, 200, 10, 10, 0.0f, 0.0f, 1.0f}; + expectLimits = {400, 400, 20, 20, 0.0f, 0.0f, 1.0f}; + testImpl->property_->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); + testImpl->CalculateNewLimitsByLimits(newLimits, customizedLimits, 2); + EXPECT_EQ(customizedLimits->maxWidth_, expectLimits->maxWidth_); + EXPECT_EQ(customizedLimits->maxHeight_, expectLimits->maxHeight_); + EXPECT_EQ(customizedLimits->minWidth_, expectLimits->minWidth_); + EXPECT_EQ(customizedLimits->minHeight_, expectLimits->minHeight_); + + // user set flag is false, window type is sys window + testImpl->property_->SetWindowType(WindowType::WINDOW_TYPE_GLOBAL_SEARCH); + customizedLimits = {200, 200, 10, 10, 0.0f, 0.0f, 1.0f}; + expectLimits = {400, 400, 10, 10, 0.0f, 0.0f, 1.0f}; + testImpl->CalculateNewLimitsByLimits(newLimits, customizedLimits, 2); + EXPECT_EQ(customizedLimits->maxWidth_, expectLimits->maxWidth_); + EXPECT_EQ(customizedLimits->maxHeight_, expectLimits->maxHeight_); + EXPECT_EQ(customizedLimits->minWidth_, expectLimits->minWidth_); + EXPECT_EQ(customizedLimits->minHeight_, expectLimits->minHeight_); + + // user set flag is true + testImpl->userLimitsSet_ = true; + customizedLimits = {200, 200, 10, 10, 0.0f, 0.0f, 1.0f}; + WindowLimits userLimits = {900, 900, 100, 100, 0.0f, 0.0f, 1.0f}; + testImpl->property_->SetUserWindowLimits(userLimits); + testImpl->CalculateNewLimitsByLimits(newLimits, customizedLimits, 2); + EXPECT_EQ(customizedLimits->maxWidth_, userLimits->maxWidth_); + EXPECT_EQ(customizedLimits->maxHeight_, userLimits->maxHeight_); + EXPECT_EQ(customizedLimits->minWidth_, userLimits->minWidth_); + EXPECT_EQ(customizedLimits->minHeight_, userLimits->minHeight_); +} } } // namespace Rosen } // namespace OHOS \ No newline at end of file -- Gitee