screen lock immersive bugifx

Change-Id: I348cac631693594e6ced97baa9bc5d7a304091b3
Signed-off-by: jincanran <jincanran@huawei.com>
This commit is contained in:
jincanran
2022-03-14 20:22:29 +08:00
parent 902e846a53
commit bd2bb57536
2 changed files with 14 additions and 0 deletions
+1
View File
@@ -91,6 +91,7 @@ private:
void RaiseWindowToTop(uint32_t windowId, std::vector<sptr<WindowNode>>& windowNodes); void RaiseWindowToTop(uint32_t windowId, std::vector<sptr<WindowNode>>& windowNodes);
void MinimizeWindowFromAbility(const sptr<WindowNode>& node, bool fromUser); void MinimizeWindowFromAbility(const sptr<WindowNode>& node, bool fromUser);
void ResetLayoutPolicy(); void ResetLayoutPolicy();
bool IsAboveSystemBarNode(sptr<WindowNode> node) const;
bool IsFullImmersiveNode(sptr<WindowNode> node) const; bool IsFullImmersiveNode(sptr<WindowNode> node) const;
bool IsSplitImmersiveNode(sptr<WindowNode> node) const; bool IsSplitImmersiveNode(sptr<WindowNode> node) const;
bool TraverseFromTopToBottom(sptr<WindowNode> node, const WindowNodeOperationFunc& func) const; bool TraverseFromTopToBottom(sptr<WindowNode> node, const WindowNodeOperationFunc& func) const;
+13
View File
@@ -402,6 +402,16 @@ uint32_t WindowNodeContainer::GetFocusWindow() const
return focusedWindow_; return focusedWindow_;
} }
bool WindowNodeContainer::IsAboveSystemBarNode(sptr<WindowNode> node) const
{
int32_t curPriority = zorderPolicy_->GetWindowPriority(node->GetWindowType());
if ((curPriority > zorderPolicy_->GetWindowPriority(WindowType::WINDOW_TYPE_STATUS_BAR)) &&
(curPriority > zorderPolicy_->GetWindowPriority(WindowType::WINDOW_TYPE_NAVIGATION_BAR))) {
return true;
}
return false;
}
bool WindowNodeContainer::IsFullImmersiveNode(sptr<WindowNode> node) const bool WindowNodeContainer::IsFullImmersiveNode(sptr<WindowNode> node) const
{ {
auto mode = node->GetWindowMode(); auto mode = node->GetWindowMode();
@@ -427,6 +437,9 @@ std::unordered_map<WindowType, SystemBarProperty> WindowNodeContainer::GetExpect
for (auto& node : rootNodes) { for (auto& node : rootNodes) {
for (auto iter = node->children_.rbegin(); iter < node->children_.rend(); ++iter) { for (auto iter = node->children_.rbegin(); iter < node->children_.rend(); ++iter) {
auto& sysBarPropMapNode = (*iter)->GetSystemBarProperty(); auto& sysBarPropMapNode = (*iter)->GetSystemBarProperty();
if (IsAboveSystemBarNode(*iter)) {
continue;
}
if (IsFullImmersiveNode(*iter)) { if (IsFullImmersiveNode(*iter)) {
WLOGFI("Top immersive window id: %{public}d. Use full immersive prop", (*iter)->GetWindowId()); WLOGFI("Top immersive window id: %{public}d. Use full immersive prop", (*iter)->GetWindowId());
for (auto it : sysBarPropMap) { for (auto it : sysBarPropMap) {