!1206 修复分屏窗口冷启动配对窗口闪退的问题

Merge pull request !1206 from 邢亚楠/recent_staring_bugfix
This commit is contained in:
openharmony_ci
2022-07-19 04:06:26 +00:00
committed by Gitee
+10 -21
View File
@@ -130,17 +130,7 @@ WMError WindowNodeContainer::ShowStartingWindow(sptr<WindowNode>& node)
if (res != WMError::WM_OK) {
return res;
}
auto windowPair = displayGroupController_->GetWindowPairByDisplayId(node->GetDisplayId());
if (windowPair == nullptr) {
WLOGFE("Window pair is nullptr");
return WMError::WM_ERROR_NULLPTR;
}
UpdateWindowTree(node);
windowPair->UpdateIfSplitRelated(node);
if (node->IsSplitMode() || node->GetWindowType() == WindowType::WINDOW_TYPE_DOCK_SLICE) {
RaiseSplitRelatedWindowToTop(node);
}
displayGroupController_->PreProcessWindowNode(node, WindowUpdateType::WINDOW_UPDATE_ADDED);
StartingWindow::UpdateRSTree(node);
AssignZOrder();
@@ -167,17 +157,7 @@ WMError WindowNodeContainer::AddWindowNode(sptr<WindowNode>& node, sptr<WindowNo
if (res != WMError::WM_OK) {
return res;
}
auto windowPair = displayGroupController_->GetWindowPairByDisplayId(node->GetDisplayId());
if (windowPair == nullptr) {
WLOGFE("Window pair is nullptr");
return WMError::WM_ERROR_NULLPTR;
}
UpdateWindowTree(node);
windowPair->UpdateIfSplitRelated(node);
if (node->IsSplitMode()) {
RaiseSplitRelatedWindowToTop(node);
}
displayGroupController_->PreProcessWindowNode(node, WindowUpdateType::WINDOW_UPDATE_ADDED);
// add node on RSTree
for (auto& displayId : node->GetShowingDisplays()) {
@@ -188,7 +168,16 @@ WMError WindowNodeContainer::AddWindowNode(sptr<WindowNode>& node, sptr<WindowNo
node->startingWindowShown_ = false;
ReZOrderShowWhenLockedWindowIfNeeded(node);
}
auto windowPair = displayGroupController_->GetWindowPairByDisplayId(node->GetDisplayId());
if (windowPair == nullptr) {
WLOGFE("Window pair is nullptr");
return WMError::WM_ERROR_NULLPTR;
}
windowPair->UpdateIfSplitRelated(node);
if (node->IsSplitMode()) {
// raise the z-order of window pair
RaiseSplitRelatedWindowToTop(node);
}
AssignZOrder();
layoutPolicy_->AddWindowNode(node);
NotifyIfAvoidAreaChanged(node, AvoidControlType::AVOID_NODE_ADD);