mirror of
https://gitee.com/openharmony/arkui_ace_engine
synced 2024-10-07 08:24:11 +00:00
!18436 custom node support multi children
Merge pull request !18436 from xiexiyun/custom_node
This commit is contained in:
commit
de44a35b6b
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
|
@ -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",
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user