Lines Matching defs:node
53 void WindowLayoutPolicy::LimitWindowToBottomRightCorner(const sptr<WindowNode>& node)
55 Rect windowRect = node->GetRequestRect();
56 Rect displayRect = DisplayGroupInfo::GetInstance().GetDisplayRect(node->GetDisplayId());
73 node->SetRequestRect(windowRect);
76 node->GetWindowId(), windowRect.posX_, windowRect.posY_, windowRect.width_, windowRect.height_);
78 for (auto& childNode : node->children_) {
126 void WindowLayoutPolicy::UpdateRectInDisplayGroup(const sptr<WindowNode>& node,
130 Rect newRect = node->GetRequestRect();
132 "%{public}d, %{public}d]", node->GetWindowId(), newRect.posX_, newRect.posY_, newRect.width_, newRect.height_);
136 node->SetRequestRect(newRect);
138 "%{public}d, %{public}d]", node->GetWindowId(), newRect.posX_, newRect.posY_, newRect.width_, newRect.height_);
140 for (auto& childNode : node->children_) {
173 for (auto& node : nodeVector) {
174 if (!node->isShowingOnMultiDisplays_) {
175 UpdateRectInDisplayGroup(node, oriDisplayRect, newDisplayRect);
177 if (WindowHelper::IsMainFloatingWindow(node->GetWindowType(), node->GetWindowMode())) {
178 LimitWindowToBottomRightCorner(node);
291 WLOGW("The node vector is empty!");
294 for (auto& node : nodeVec) {
295 LayoutWindowNode(node);
311 WLOGE("The node vector is empty!");
314 for (auto& node : nodeVec) {
315 // just has one fullscreen app node on foreground
316 if (WindowHelper::IsMainFullScreenWindow(node->GetWindowType(), node->GetWindowMode())) {
317 fullScreenWinIds.emplace_back(node->GetWindowId());
319 if (WindowHelper::IsMainFloatingWindow(node->GetWindowType(), node->GetWindowMode())) {
320 floatMainIds.emplace_back(node->GetWindowId());
340 void WindowLayoutPolicy::LayoutWindowNode(const sptr<WindowNode>& node)
342 if (node == nullptr || node->parent_ == nullptr) {
346 if (!node->currentVisibility_) {
347 WLOGFD("window[%{public}u] currently not visible, no need to layout", node->GetWindowId());
355 UpdateLayoutRect(node);
356 if (WindowHelper::IsSystemBarWindow(node->GetWindowType())) {
357 UpdateDisplayLimitRect(node, limitRectMap_[node->GetDisplayId()]);
361 for (auto& childNode : node->children_) {
372 void WindowLayoutPolicy::NotifyClientAndAnimation(const sptr<WindowNode>& node,
375 if (node->GetWindowToken()) {
376 auto type = node->GetWindowType();
379 node->GetWindowToken()->UpdateWindowRect(winRect, node->GetDecoStatus(), reason,
382 node->GetWindowToken()->UpdateWindowRect(winRect, node->GetDecoStatus(), reason);
385 "%{public}u", node->GetWindowId(), winRect.posX_, winRect.posY_, winRect.width_, winRect.height_, reason);
387 if ((reason != WindowSizeChangeReason::MOVE) && (node->GetWindowType() != WindowType::WINDOW_TYPE_DOCK_SLICE)) {
388 node->ResetWindowSizeChangeReason();
402 Rect WindowLayoutPolicy::CalcEntireWindowHotZone(const sptr<WindowNode>& node, const Rect& winRect, uint32_t hotZone,
409 if (node->GetWindowType() == WindowType::WINDOW_TYPE_DOCK_SLICE) {
417 } else if (node->GetWindowType() == WindowType::WINDOW_TYPE_LAUNCHER_RECENT) {
418 rect = DisplayGroupInfo::GetInstance().GetDisplayRect(node->GetDisplayId());
419 } else if (WindowHelper::IsMainFloatingWindow(node->GetWindowType(), node->GetWindowMode())) {
428 void WindowLayoutPolicy::CalcAndSetNodeHotZone(const Rect& winRect, const sptr<WindowNode>& node)
430 float virtualPixelRatio = DisplayGroupInfo::GetInstance().GetDisplayVirtualPixelRatio(node->GetDisplayId());
432 if (node->GetWindowProperty()->isNeedComputerTransform()) {
433 node->ComputeTransform();
434 hotZoneScale = WindowHelper::CalculateHotZoneScale(node->GetWindowProperty()->GetTransformMat());
437 auto hotZoneRectTouch = CalcEntireWindowHotZone(node, winRect, HOTZONE_TOUCH, virtualPixelRatio, hotZoneScale);
438 auto hotZoneRectPointer = CalcEntireWindowHotZone(node, winRect, HOTZONE_POINTER, virtualPixelRatio, hotZoneScale);
440 node->SetEntireWindowTouchHotArea(hotZoneRectTouch);
441 node->SetEntireWindowPointerHotArea(hotZoneRectPointer);
444 node->GetWindowProperty()->GetTouchHotAreas(requestedHotAreas);
456 node->SetTouchHotAreas(touchHotAreas);
457 node->SetPointerHotAreas(pointerHotAreas);
460 WindowLimits WindowLayoutPolicy::GetSystemSizeLimits(const sptr<WindowNode>& node,
470 if (node->GetWindowType() == WindowType::WINDOW_TYPE_FLOAT_CAMERA) {
497 void WindowLayoutPolicy::UpdateWindowSizeLimits(const sptr<WindowNode>& node)
499 const auto& displayRect = DisplayGroupInfo::GetInstance().GetDisplayRect(node->GetDisplayId());
500 const auto& virtualPixelRatio = DisplayGroupInfo::GetInstance().GetDisplayVirtualPixelRatio(node->GetDisplayId());
501 const auto& systemLimits = GetSystemSizeLimits(node, displayRect, virtualPixelRatio);
502 const auto& customizedLimits = node->GetWindowSizeLimits();
547 "min:%{public}u], Ratio: [max:%{public}f, min:%{public}f]", node->GetWindowId(), newLimits.maxWidth_,
549 node->SetWindowUpdatedSizeLimits(newLimits);
563 void WindowLayoutPolicy::UpdateDisplayLimitRect(const sptr<WindowNode>& node, Rect& limitRect)
565 const auto& layoutRect = node->GetWindowRect();
570 if (node->GetWindowType() == WindowType::WINDOW_TYPE_STATUS_BAR ||
571 node->GetWindowType() == WindowType::WINDOW_TYPE_NAVIGATION_BAR) {
572 auto avoidPosType = GetAvoidPosType(layoutRect, node->GetDisplayId());
602 node->GetWindowId(), layoutRect.posX_, layoutRect.posY_, layoutRect.width_, layoutRect.height_,
608 for (auto& node : nodeVec) {
609 if (node->GetWindowType() == WindowType::WINDOW_TYPE_LAUNCHER_RECENT &&
610 node->GetWindowMode() == WindowMode::WINDOW_MODE_FULLSCREEN) {
617 static void AdjustFixedOrientationRSSurfaceNode(const sptr<WindowNode>& node, const Rect& winRect,
624 auto requestOrientation = node->GetRequestedOrientation();
625 if (!WmsUtils::IsFixedOrientation(requestOrientation, node->GetWindowMode(), node->GetWindowFlags())) {
639 node->GetWindowId(), displayW, displayH, rotation);
647 static void SetBounds(const sptr<WindowNode>& node, const Rect& winRect, const Rect& preRect)
649 if (node->GetWindowType() == WindowType::WINDOW_TYPE_APP_COMPONENT ||
650 node->GetWindowSizeChangeReason() == WindowSizeChangeReason::TRANSFORM) {
656 "winRect: [%{public}d, %{public}d, %{public}d, %{public}d], %{public}u", node->GetWindowName().c_str(),
657 node->GetWindowId(), preRect.posX_, preRect.posY_, preRect.width_, preRect.height_,
658 winRect.posX_, winRect.posY_, winRect.width_, winRect.height_, node->GetWindowSizeChangeReason());
660 if (node->leashWinSurfaceNode_) {
663 node->leashWinSurfaceNode_->SetBounds(winRect.posX_, winRect.posY_, winRect.width_, winRect.height_);
665 if (node->startingWinSurfaceNode_) {
666 node->startingWinSurfaceNode_->SetBounds(0, 0, winRect.width_, winRect.height_);
668 if (node->surfaceNode_) {
669 node->surfaceNode_->SetBounds(0, 0, winRect.width_, winRect.height_);
671 AdjustFixedOrientationRSSurfaceNode(node, winRect, node->leashWinSurfaceNode_,
672 displayGroupInfo.GetDisplayInfo(node->GetDisplayId()));
673 } else if (node->surfaceNode_) {
674 node->surfaceNode_->SetBounds(winRect.posX_, winRect.posY_, winRect.width_, winRect.height_);
675 AdjustFixedOrientationRSSurfaceNode(node, winRect, node->surfaceNode_,
676 displayGroupInfo.GetDisplayInfo(node->GetDisplayId()));
680 void WindowLayoutPolicy::UpdateSurfaceBounds(const sptr<WindowNode>& node, const Rect& winRect, const Rect& preRect)
682 wptr<WindowNode> weakNode = node;
692 switch (node->GetWindowSizeChangeReason()) {
701 if (WmsUtils::IsFixedOrientation(node->GetRequestedOrientation(),
702 node->GetWindowMode(), node->GetWindowFlags())) {
703 auto disInfo = DisplayGroupInfo::GetInstance().GetDisplayInfo(node->GetDisplayId());
705 WLOGI("[FixOrientation] winNode %{public}u orientation, skip animation", node->GetWindowId());
744 bool WindowLayoutPolicy::IsTileRectSatisfiedWithSizeLimits(const sptr<WindowNode>& node)
759 void WindowLayoutPolicy::GetStoragedAspectRatio(const sptr<WindowNode>& node)
761 if (!WindowHelper::IsMainWindow(node->GetWindowType())) {
765 std::string abilityName = node->abilityInfo_.abilityName_;
770 std::string keyName = nameVector.empty() ? node->abilityInfo_.bundleName_ :
771 node->abilityInfo_.bundleName_ + "." + nameVector.back();
775 node->SetAspectRatio(ratio);
779 void WindowLayoutPolicy::FixWindowRectWithinDisplay(const sptr<WindowNode>& node) const
781 auto displayId = node->GetDisplayId();
783 auto type = node->GetWindowType();
784 Rect rect = node->GetRequestRect();
805 node->SetRequestRect(rect);
807 node->GetWindowId(), rect.posX_, rect.posY_, rect.width_, rect.height_);
810 void WindowLayoutPolicy::GetMaximizeRect(const sptr<WindowNode>& node, Rect& maxRect)