From 17a9db16e111636f7e2f2d98d90b42eefad29b8c Mon Sep 17 00:00:00 2001 From: second_89ed Date: Fri, 5 Sep 2025 23:26:53 +0800 Subject: [PATCH] fix xiaoyi windows can't be clicked Signed-off-by: second_89ed --- .../src/scene_session_dirty_manager.cpp | 10 +++-- .../scene_session_dirty_manager_test2.cpp | 38 +++++++++++++++++++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/window_scene/session_manager/src/scene_session_dirty_manager.cpp b/window_scene/session_manager/src/scene_session_dirty_manager.cpp index 3876d3c23e..4f9de61044 100644 --- a/window_scene/session_manager/src/scene_session_dirty_manager.cpp +++ b/window_scene/session_manager/src/scene_session_dirty_manager.cpp @@ -41,10 +41,12 @@ static int32_t g_screenRotationOffset = system::GetIntParameter("const. constexpr float ZORDER_UIEXTENSION_INDEX = 0.1; constexpr int WINDOW_NAME_TYPE_UNKNOWN = 0; constexpr int WINDOW_NAME_TYPE_THUMBNAIL = 1; -constexpr int WINDOW_NAME_TYPE_VOICEINPUT = 2; +constexpr int WINDOW_NAME_TYPE_XIAOYI = 2; const std::string SCREENSHOT_WINDOW_NAME_PREFIX = "ScreenShotWindow"; const std::string PREVIEW_WINDOW_NAME_PREFIX = "PreviewWindow"; const std::string VOICEINPUT_WINDOW_NAME_PREFIX = "__VoiceHardwareInput"; +const std::string SWITCH_INPUT_METHOD_WINDOW_NAME_PREFIX = "__SwitchInputMethod"; +const std::string MORE_SETTING_WINDOW_NAME_PREFIX = "__MoreSettingDialog"; } // namespace static bool operator==(const MMI::Rect left, const MMI::Rect right) @@ -861,8 +863,10 @@ std::pair> SceneSessionDirtyMa }; if (startsWith(windowName, SCREENSHOT_WINDOW_NAME_PREFIX) || startsWith(windowName, PREVIEW_WINDOW_NAME_PREFIX)) { windowNameType = WINDOW_NAME_TYPE_THUMBNAIL; - } else if (startsWith(windowName, VOICEINPUT_WINDOW_NAME_PREFIX)) { - windowNameType = WINDOW_NAME_TYPE_VOICEINPUT; + } else if (startsWith(windowName, VOICEINPUT_WINDOW_NAME_PREFIX) || + startsWith(windowName, SWITCH_INPUT_METHOD_WINDOW_NAME_PREFIX) || + startsWith(windowName, MORE_SETTING_WINDOW_NAME_PREFIX)) { + windowNameType = WINDOW_NAME_TYPE_XIAOYI; } auto pixelMap = windowSessionProperty->GetWindowMask(); MMI::WindowInfo windowInfo = { diff --git a/window_scene/test/unittest/event_distribution/scene_session_dirty_manager_test2.cpp b/window_scene/test/unittest/event_distribution/scene_session_dirty_manager_test2.cpp index 4b7557aabf..8aeedd3e80 100644 --- a/window_scene/test/unittest/event_distribution/scene_session_dirty_manager_test2.cpp +++ b/window_scene/test/unittest/event_distribution/scene_session_dirty_manager_test2.cpp @@ -773,6 +773,44 @@ HWTEST_F(SceneSessionDirtyManagerTest2, GetWindowInfoWithVoiceInputPrefix, TestS EXPECT_EQ(result.first.windowNameType, 2); } + +/** + * @tc.name: GetWindowInfoWithSwitchInputMethodPrefix + * @tc.desc: windowInfo with switch input method prefix + * @tc.type: FUNC + */ +HWTEST_F(SceneSessionDirtyManagerTest2, GetWindowInfoWithSwitchInputMethodPrefix, TestSize.Level2) +{ + std::vector lastWindowInfoList; + SessionInfo info; + sptr session = new (std::nothrow) SceneSession(info, nullptr); + sptr windowSessionProperty = session->GetSessionProperty(); + session->SetSessionProperty(windowSessionProperty); + windowSessionProperty->SetWindowName("__SwitchInputMethodExample"); + + auto result = manager_->GetWindowInfo(session, SceneSessionDirtyManager::WindowAction::WINDOW_ADD); + + EXPECT_EQ(result.first.windowNameType, 2); +} + +/** + * @tc.name: GetWindowInfoWithMoreSettingPrefix + * @tc.desc: windowInfo with more setting prefix + * @tc.type: FUNC + */ +HWTEST_F(SceneSessionDirtyManagerTest2, GetWindowInfoWithMoreSettingPrefix, TestSize.Level2) +{ + std::vector lastWindowInfoList; + SessionInfo info; + sptr session = new (std::nothrow) SceneSession(info, nullptr); + sptr windowSessionProperty = session->GetSessionProperty(); + session->SetSessionProperty(windowSessionProperty); + windowSessionProperty->SetWindowName("__MoreSettingDialogExample"); + + auto result = manager_->GetWindowInfo(session, SceneSessionDirtyManager::WindowAction::WINDOW_ADD); + + EXPECT_EQ(result.first.windowNameType, 2); +} } // namespace } // namespace Rosen } // namespace OHOS -- Gitee