diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index 2a77b5a9be85aefd67bd64e59c77f0d4870609bf..17d2e81d8638faa97b3693440d701e176d478957 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -6158,10 +6158,11 @@ void SceneSessionManager::UpdateForceHideState(const sptr& sceneSe bool forceHideFloatOld = !systemTopSceneSessionMap_.empty(); bool notifyAll = false; if (add) { - if (property->GetHideNonSystemFloatingWindows()) { + if (property->GetHideNonSystemFloatingWindows() && sceneSession->GetWindowMode() != WindowMode::WINDOW_MODE_PIP) { systemTopSceneSessionMap_.insert({ persistentId, sceneSession }); notifyAll = !forceHideFloatOld; - } else if ((property->IsFloatingWindowAppType() && !property->GetSystemCalling()) || + } else if ((property->IsFloatingWindowAppType() && !property->GetSystemCalling() && + sceneSession->GetWindowMode() != WindowMode::WINDOW_MODE_PIP) || sceneSession->GetIsAncoForFloatingWindow()) { nonSystemFloatSceneSessionMap_.insert({ persistentId, sceneSession }); if (forceHideFloatOld) {