diff --git a/wm/src/window_scene_session_impl.cpp b/wm/src/window_scene_session_impl.cpp index 8c8f6bc4c7ff8c13745ece4be291656af6caa2ac..6cb1f04eb90ff5059883658d33713037d113a9f2 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 d8a49545d1cda3d6a5090c2f39cdf44083f8e154..e1e1d195472babcfe60fca26b585ed1daff30a2a 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 };