From 645328536a8a799c3d0f98b8bf486576d0144870 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 29 May 2024 20:27:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E7=94=B1=E5=A4=9A=E7=AA=97=E6=A8=A1?= =?UTF-8?q?=E5=BC=8FdeviceType=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: unknown --- wm/src/window_scene_session_impl.cpp | 9 +++++++-- wm/src/window_session_impl.cpp | 12 +++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/wm/src/window_scene_session_impl.cpp b/wm/src/window_scene_session_impl.cpp index 8c8f6bc4c7..6cb1f04eb9 100644 --- a/wm/src/window_scene_session_impl.cpp +++ b/wm/src/window_scene_session_impl.cpp @@ -1885,7 +1885,10 @@ WMError WindowSceneSessionImpl::Recover(uint32_t reason) WLOGFE("session is invalid"); return WMError::WM_ERROR_INVALID_WINDOW; } - if (windowSystemConfig_.uiType_ != "pc") { + auto isPC = windowSystemConfig_.uiType_ == "pc"; + bool isFreeMutiWindowMode = windowSystemConfig_.freeMultiWindowSupport_ && + windowSystemConfig_.freeMultiWindowEnable_; + if (!(isPC || isFreeMutiWindowMode)) { WLOGFE("The device is not supported"); return WMError::WM_ERROR_DEVICE_NOT_SUPPORT; } @@ -1925,7 +1928,9 @@ void WindowSceneSessionImpl::StartMove() bool isDialogWindow = WindowHelper::IsDialogWindow(windowType); bool isDecorDialog = isDialogWindow && property_->IsDecorEnable(); auto isPC = windowSystemConfig_.uiType_ == "pc"; - bool isValidWindow = isMainWindow || (isPC && (isSubWindow || isDecorDialog)); + bool isFreeMutiWindowMode = windowSystemConfig_.freeMultiWindowSupport_ && + windowSystemConfig_.freeMultiWindowEnable_; + bool isValidWindow = isMainWindow || ((isPC || isFreeMutiWindowMode) && (isSubWindow || isDecorDialog)); if (isValidWindow && hostSession_) { hostSession_->OnSessionEvent(SessionEvent::EVENT_START_MOVE); } diff --git a/wm/src/window_session_impl.cpp b/wm/src/window_session_impl.cpp index d8a49545d1..e1e1d19547 100644 --- a/wm/src/window_session_impl.cpp +++ b/wm/src/window_session_impl.cpp @@ -158,7 +158,9 @@ WindowSessionImpl::WindowSessionImpl(const sptr& option) void WindowSessionImpl::MakeSubOrDialogWindowDragableAndMoveble() { auto isPC = windowSystemConfig_.uiType_ == "pc"; - if (isPC && windowOption_ != nullptr) { + bool isFreeMutiWindowMode = windowSystemConfig_.freeMultiWindowSupport_ && + windowSystemConfig_.freeMultiWindowEnable_; + if ((isPC || isFreeMutiWindowMode) && windowOption_ != nullptr) { if (WindowHelper::IsSubWindow(property_->GetWindowType())) { WLOGFD("create subwindow, title: %{public}s, decorEnable: %{public}d", windowOption_->GetSubWindowTitle().c_str(), windowOption_->GetSubWindowDecorEnable()); @@ -735,10 +737,12 @@ void WindowSessionImpl::UpdateTitleButtonVisibility() return; } auto isPC = windowSystemConfig_.uiType_ == "pc"; + bool isFreeMutiWindowMode = windowSystemConfig_.freeMultiWindowSupport_ && + windowSystemConfig_.freeMultiWindowEnable_; WindowType windowType = GetType(); bool isSubWindow = WindowHelper::IsSubWindow(windowType); bool isDialogWindow = WindowHelper::IsDialogWindow(windowType); - if (isPC && (isSubWindow || isDialogWindow)) { + if ((isPC || isFreeMutiWindowMode) && (isSubWindow || isDialogWindow)) { WLOGFD("hide other buttons except close"); uiContent_->HideWindowTitleButton(true, true, true); return; @@ -1750,7 +1754,9 @@ WMError WindowSessionImpl::SetTitleButtonVisible(bool isMaximizeVisible, bool is return WMError::WM_ERROR_INVALID_WINDOW; } auto isPC = windowSystemConfig_.uiType_ == "pc"; - if (!isPC) { + bool isFreeMutiWindowMode = windowSystemConfig_.freeMultiWindowSupport_ && + windowSystemConfig_.freeMultiWindowEnable_; + if (!(isPC || isFreeMutiWindowMode)) { return WMError::WM_ERROR_DEVICE_NOT_SUPPORT; } windowTitleVisibleFlags_ = { isMaximizeVisible, isMinimizeVisible, isSplitVisible }; -- Gitee