modify split

Signed-off-by: l00574490 <liuqi149@huawei.com>
Change-Id: I51c249044496e4220121819d0f479a14909e15b9
This commit is contained in:
l00574490
2022-01-25 17:02:34 +08:00
parent ee5c65559d
commit 7c35dd582e
4 changed files with 22 additions and 2 deletions
+1
View File
@@ -49,6 +49,7 @@ public:
const sptr<WindowNode>& appNode, const sptr<WindowNode>& aboveAppNode);
~WindowLayoutPolicy() = default;
void UpdateDisplayInfo(const Rect& primaryRect, const Rect& secondaryRect, const Rect& displayRect);
void UpdateSplitInfo(const Rect& primaryRect, const Rect& secondaryRect);
void AddWindowNode(sptr<WindowNode>& node);
void RemoveWindowNode(sptr<WindowNode>& node);
void UpdateWindowNode(sptr<WindowNode>& node);
+1
View File
@@ -51,6 +51,7 @@ public:
std::shared_ptr<RSDisplayNode> GetDisplayNode() const;
void LayoutDividerWindow(sptr<WindowNode>& node);
void UpdateDisplayInfo();
void UpdateSplitInfo();
bool isVerticalDisplay() const;
class DisplayRects : public RefBase {
+11 -1
View File
@@ -47,6 +47,17 @@ void WindowLayoutPolicy::UpdateDisplayInfo(const Rect& primaryRect,
UpdateDefaultFoatingRect();
}
void WindowLayoutPolicy::UpdateSplitInfo(const Rect& primaryRect, const Rect& secondaryRect)
{
dependRects.priRect_ = primaryRect;
dependRects.secRect_ = secondaryRect;
dependRects.limitPriRect_ = dependRects.priRect_;
dependRects.limitSecRect_ = dependRects.secRect_;
UpdateSplitLimitRect(dependRects.limitFullRect_, dependRects.limitPriRect_);
UpdateSplitLimitRect(dependRects.limitFullRect_, dependRects.limitSecRect_);
}
void WindowLayoutPolicy::LayoutWindowTree()
{
InitLimitRects();
@@ -131,7 +142,6 @@ void WindowLayoutPolicy::RemoveWindowNode(sptr<WindowNode>& node)
if (avoidTypes_.find(type) != avoidTypes_.end()) {
LayoutWindowTree();
} else if (type == WindowType::WINDOW_TYPE_DOCK_SLICE) { // split screen mode
// TODO: change split screen
LayoutWindowTree();
}
}
+9 -1
View File
@@ -517,6 +517,14 @@ void WindowNodeContainer::UpdateDisplayInfo()
layoutPolicy_->UpdateDisplayInfo(primaryRect, secondaryRect, displayRect);
}
void WindowNodeContainer::UpdateSplitInfo()
{
// update for split
const Rect& primaryRect = displayRects_->GetRectByWindowMode(WindowMode::WINDOW_MODE_SPLIT_PRIMARY);
const Rect& secondaryRect = displayRects_->GetRectByWindowMode(WindowMode::WINDOW_MODE_SPLIT_SECONDARY);
layoutPolicy_->UpdateSplitInfo(primaryRect, secondaryRect);
}
void WindowNodeContainer::LayoutDividerWindow(sptr<WindowNode>& node)
{
layoutPolicy_->UpdateLayoutRect(node);
@@ -709,7 +717,7 @@ WMError WindowNodeContainer::HandleModeChangeToSplit(sptr<WindowNode>& triggerNo
displayRects_->SetSplitRect(DEFAULT_SPLIT_RATIO);
SendSplitScreenEvent(triggerNode->GetWindowMode());
}
UpdateDisplayInfo();
UpdateSplitInfo();
return WMError::WM_OK;
}