!18436 custom node support multi children

Merge pull request !18436 from xiexiyun/custom_node
This commit is contained in:
openharmony_ci 2023-08-26 10:53:36 +00:00 committed by Gitee
commit de44a35b6b
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 31 additions and 13 deletions

View File

@ -19,6 +19,7 @@
#include "base/log/log_wrapper.h"
#include "base/utils/utils.h"
#include "core/components_ng/base/frame_node.h"
#include "core/components_ng/base/view_stack_processor.h"
#include "core/components_ng/pattern/custom/custom_measure_layout_node.h"
namespace OHOS::Ace::NG {
@ -35,16 +36,24 @@ void CustomNodeLayoutAlgorithm::Measure(LayoutWrapper* layoutWrapper)
{
ACE_SCOPED_TRACE("CustomNode:BuildItem");
// first create child node and wrapper.
auto* stack = ViewStackProcessor::GetInstance();
auto nodeId = stack->ClaimNodeId();
auto frameNode =
FrameNode::GetOrCreateFrameNode("dummyNode", nodeId, []() { return AceType::MakeRefPtr<Pattern>(); });
stack->Push(frameNode);
auto child = renderFunction_();
renderFunction_ = nullptr;
stack->Pop();
CHECK_NULL_VOID(child);
buildItem_ = child;
if (child) {
child->MountToParent(host);
}
auto layoutWrapperNode = DynamicCast<LayoutWrapperNode>(Claim(layoutWrapper));
if (layoutWrapperNode) {
child->AdjustLayoutWrapperTree(layoutWrapperNode, true, true);
for (const auto& child : frameNode->GetChildren()) {
if (!child) {
continue;
}
child->MountToParent(host);
if (layoutWrapperNode) {
child->AdjustLayoutWrapperTree(layoutWrapperNode, true, true);
}
}
}
}

View File

@ -76,8 +76,7 @@ void FrameNode::MarkNeedRender(bool isRenderBoundary) {}
void FrameNode::MarkDirtyNode(bool isMeasureBoundary, bool isRenderBoundary, PropertyChangeFlag extraFlag) {}
void FrameNode::OnGenerateOneDepthVisibleFrame(std::list<RefPtr<FrameNode>>& visibleList) {}
void FrameNode::OnGenerateOneDepthAllFrame(std::list<RefPtr<FrameNode>>& allList) {}
void FrameNode::OnGenerateOneDepthVisibleFrameWithTransition(std::list<RefPtr<FrameNode>>& visibleList)
{}
void FrameNode::OnGenerateOneDepthVisibleFrameWithTransition(std::list<RefPtr<FrameNode>>& visibleList) {}
void FrameNode::UpdateChildrenLayoutWrapper(const RefPtr<LayoutWrapperNode>& self, bool forceMeasure, bool forceLayout)
{}
void FrameNode::AdjustLayoutWrapperTree(const RefPtr<LayoutWrapperNode>& parent, bool forceMeasure, bool forceLayout) {}
@ -86,6 +85,11 @@ void FrameNode::ForceUpdateLayoutPropertyFlag(PropertyChangeFlag propertyChangeF
void FrameNode::AdjustParentLayoutFlag(PropertyChangeFlag& flag) {}
void FrameNode::MarkResponseRegion(bool isResponseRegion) {}
void FrameNode::MarkNeedSyncRenderTree(bool) {}
RefPtr<LayoutWrapperNode> FrameNode::UpdateLayoutWrapper(
RefPtr<LayoutWrapperNode> layoutWrapper, bool forceMeasure, bool forceLayout)
{
return nullptr;
}
RefPtr<UINode> FrameNode::GetFrameChildByIndex(uint32_t index, bool needBuild)
{
return nullptr;

View File

@ -30,6 +30,11 @@ ViewStackProcessor* ViewStackProcessor::GetInstance()
ViewStackProcessor::ViewStackProcessor() = default;
std::string ViewStackProcessor::ProcessViewId(const std::string& viewId)
{
return "";
}
RefPtr<FrameNode> ViewStackProcessor::GetMainFrameNode() const
{
return AceType::DynamicCast<FrameNode>(GetMainElementNode());

View File

@ -34,14 +34,10 @@ ohos_unittest("view_full_update_model_ng_test") {
"$ace_root/frameworks/core/pipeline/base/constants.cpp",
# components_ng
"$ace_root/frameworks/core/components_ng/base/frame_node.cpp",
"$ace_root/frameworks/core/components_ng/base/geometry_node.cpp",
"$ace_root/frameworks/core/components_ng/base/modifier.cpp",
"$ace_root/frameworks/core/components_ng/base/ui_node.cpp",
"$ace_root/frameworks/core/components_ng/base/view_stack_processor.cpp",
"$ace_root/frameworks/core/components_ng/event/event_hub.cpp",
"$ace_root/frameworks/core/components_ng/event/focus_hub.cpp",
"$ace_root/frameworks/core/components_ng/event/gesture_event_hub.cpp",
"$ace_root/frameworks/core/components_ng/event/input_event.cpp",
"$ace_root/frameworks/core/components_ng/event/input_event_hub.cpp",
"$ace_root/frameworks/core/components_ng/event/state_style_manager.cpp",
@ -63,15 +59,19 @@ ohos_unittest("view_full_update_model_ng_test") {
"$ace_root/frameworks/core/components_ng/property/measure_utils.cpp",
"$ace_root/frameworks/core/components_ng/property/property.cpp",
"$ace_root/frameworks/core/components_ng/property/safe_area_insets.cpp",
"$ace_root/frameworks/core/components_ng/syntax/for_each_node.cpp",
# mock
"$ace_root/frameworks/base/test/mock/mock_system_properties.cpp",
"$ace_root/frameworks/core/common/test/mock/mock_ace_application_info.cpp",
"$ace_root/frameworks/core/components_ng/test/mock/animation/mock_geometry_transition.cpp",
"$ace_root/frameworks/core/components_ng/test/mock/base/mock_frame_node.cpp",
"$ace_root/frameworks/core/components_ng/test/mock/base/mock_ui_node.cpp",
"$ace_root/frameworks/core/components_ng/test/mock/base/mock_view_stack_processor.cpp",
"$ace_root/frameworks/core/components_ng/test/mock/event/mock_gesture_event_hub.cpp",
"$ace_root/frameworks/core/components_ng/test/mock/render/mock_drawing_convertor.cpp",
"$ace_root/frameworks/core/components_ng/test/mock/render/mock_render_context.cpp",
"$ace_root/frameworks/core/components_ng/test/mock/render/mock_render_context_creator.cpp",
"$ace_root/frameworks/core/components_ng/test/mock/syntax/mock_for_each_node.cpp",
"$ace_root/frameworks/core/pipeline_ng/test/mock/mock_element_register.cpp",
"$ace_root/frameworks/core/pipeline_ng/test/mock/mock_pipeline_base.cpp",