From d82f842d0667e5223a171715e1183e6c6b2c8e71 Mon Sep 17 00:00:00 2001 From: LHHHYYY Date: Mon, 11 Aug 2025 16:29:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=89=E8=B5=B7=E5=85=A8=E5=B1=8F=E5=8F=8C?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E6=97=B6=E5=B1=8F=E8=94=BD=E4=B8=8B=E6=96=B9?= =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E7=82=B9=E5=87=BB=E8=8E=B7=E7=84=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: LHHHYYY --- window_scene/session/host/include/scene_session.h | 1 + window_scene/session/host/src/scene_session.cpp | 11 +++++++++++ .../session_manager/src/scene_session_manager.cpp | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/window_scene/session/host/include/scene_session.h b/window_scene/session/host/include/scene_session.h index ca78210ea2..557b4bc0de 100644 --- a/window_scene/session/host/include/scene_session.h +++ b/window_scene/session/host/include/scene_session.h @@ -519,6 +519,7 @@ public: bool IsDecorEnable() const; bool IsAppSession() const; bool IsAppOrLowerSystemSession() const; + bool IsFullScreenSystemPanel() const; bool IsSystemSessionAboveApp() const; bool IsTurnScreenOn() const; bool IsKeepScreenOn() const; diff --git a/window_scene/session/host/src/scene_session.cpp b/window_scene/session/host/src/scene_session.cpp index 37f54ff8e1..c62640a5a8 100644 --- a/window_scene/session/host/src/scene_session.cpp +++ b/window_scene/session/host/src/scene_session.cpp @@ -4913,6 +4913,17 @@ bool SceneSession::IsAppOrLowerSystemSession() const return IsAppSession(); } +/** @note @window.focus */ +bool SceneSession::IsFullScreenSystemPanel() const{ + WindowType windowType = GetWindowType(); + if (windowType == WindowType::WINDOW_TYPE_PANEL && + (systemConfig_.IsPhoneWindow() || systemConfig_.IsPadWindow()) && + sessionInfo_.bundleName_.find("SCBDropdownPanel") != std::string::npos) { + return true; + } + return false; +} + /** @note @window.focus */ bool SceneSession::IsSystemSessionAboveApp() const { diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index d51cbf881a..eb0f79ce4a 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -7579,7 +7579,8 @@ bool SceneSessionManager::CheckClickFocusIsDownThroughFullScreen(const sptr& sceneSession, FocusChangeReason reason) { if (focusedSession->GetWindowType() != WindowType::WINDOW_TYPE_GLOBAL_SEARCH && - focusedSession->GetWindowType() != WindowType::WINDOW_TYPE_NEGATIVE_SCREEN) { + focusedSession->GetWindowType() != WindowType::WINDOW_TYPE_NEGATIVE_SCREEN && + !focusedSession->IsFullScreenSystemPanel()) { return false; } if (reason != FocusChangeReason::CLICK || !focusedSession->GetBlockingFocus()) { -- Gitee