diff --git a/frameworks/core/components_ng/pattern/text_field/text_field_model_ng.cpp b/frameworks/core/components_ng/pattern/text_field/text_field_model_ng.cpp index e1c8680c1266b1f4323341878e9277aa5cc50f35..c7d734d403a8199988ed69c0f32bf5cb305f1964 100644 --- a/frameworks/core/components_ng/pattern/text_field/text_field_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/text_field/text_field_model_ng.cpp @@ -119,8 +119,6 @@ RefPtr TextFieldModelNG::CreateTextInputNode( textFieldLayoutProperty->UpdateMaxLines(1); textFieldLayoutProperty->UpdatePlaceholderMaxLines(1); pattern->SetTextInputFlag(true); - pattern->SetTextFieldController(AceType::MakeRefPtr()); - pattern->GetTextFieldController()->SetPattern(AceType::WeakClaim(AceType::RawPtr(pattern))); UpdateTextFieldPattern(frameNode, value); return frameNode; } @@ -133,10 +131,6 @@ RefPtr TextFieldModelNG::CreateTextAreaNode( CHECK_NULL_RETURN(textFieldLayoutProperty, nullptr); textFieldLayoutProperty->UpdatePlaceholder(placeholder.value_or(u"")); textFieldLayoutProperty->UpdatePlaceholderMaxLines(Infinity()); - auto pattern = frameNode->GetPattern(); - CHECK_NULL_RETURN(pattern, nullptr); - pattern->SetTextFieldController(AceType::MakeRefPtr()); - pattern->GetTextFieldController()->SetPattern(AceType::WeakClaim(AceType::RawPtr(pattern))); UpdateTextFieldPattern(frameNode, value); return frameNode; } diff --git a/frameworks/core/components_ng/pattern/text_field/text_field_model_static.cpp b/frameworks/core/components_ng/pattern/text_field/text_field_model_static.cpp index 3ca352c9aa2e2c42eb0ab179c6fe3e56af5cf397..7ef1270ef33fd048743424cdef662039550a0ef4 100644 --- a/frameworks/core/components_ng/pattern/text_field/text_field_model_static.cpp +++ b/frameworks/core/components_ng/pattern/text_field/text_field_model_static.cpp @@ -37,6 +37,40 @@ constexpr double DEFAULT_OPACITY = 0.2; constexpr int32_t DEFAULT_ALPHA = 255; } +RefPtr TextFieldModelStatic::CreateTextInputNode( + int32_t nodeId, const std::optional& placeholder, const std::optional& value) +{ + auto frameNode = FrameNode::CreateFrameNode(V2::TEXTINPUT_ETS_TAG, nodeId, AceType::MakeRefPtr()); + auto textFieldLayoutProperty = frameNode->GetLayoutProperty(); + CHECK_NULL_RETURN(textFieldLayoutProperty, nullptr); + auto pattern = frameNode->GetPattern(); + CHECK_NULL_RETURN(pattern, nullptr); + textFieldLayoutProperty->UpdatePlaceholder(placeholder.value_or(u"")); + textFieldLayoutProperty->UpdateMaxLines(1); + textFieldLayoutProperty->UpdatePlaceholderMaxLines(1); + pattern->SetTextInputFlag(true); + pattern->SetTextFieldController(AceType::MakeRefPtr()); + pattern->GetTextFieldController()->SetPattern(AceType::WeakClaim(AceType::RawPtr(pattern))); + TextFieldModelNG::UpdateTextFieldPattern(frameNode, value); + return frameNode; +} + +RefPtr TextFieldModelStatic::CreateTextAreaNode( + int32_t nodeId, const std::optional& placeholder, const std::optional& value) +{ + auto frameNode = FrameNode::CreateFrameNode(V2::TEXTAREA_ETS_TAG, nodeId, AceType::MakeRefPtr()); + auto textFieldLayoutProperty = frameNode->GetLayoutProperty(); + CHECK_NULL_RETURN(textFieldLayoutProperty, nullptr); + textFieldLayoutProperty->UpdatePlaceholder(placeholder.value_or(u"")); + textFieldLayoutProperty->UpdatePlaceholderMaxLines(Infinity()); + auto pattern = frameNode->GetPattern(); + CHECK_NULL_RETURN(pattern, nullptr); + pattern->SetTextFieldController(AceType::MakeRefPtr()); + pattern->GetTextFieldController()->SetPattern(AceType::WeakClaim(AceType::RawPtr(pattern))); + TextFieldModelNG::UpdateTextFieldPattern(frameNode, value); + return frameNode; +} + void TextFieldModelStatic::SetShowUnit(FrameNode* frameNode, std::function()>&& builder) { CHECK_NULL_VOID(frameNode); diff --git a/frameworks/core/components_ng/pattern/text_field/text_field_model_static.h b/frameworks/core/components_ng/pattern/text_field/text_field_model_static.h index 8c97a8a4ede8f6756812bce74aa5c31b772fc241..bb8978d6350d0a3ddb6cbefbb759c674a638ba3d 100644 --- a/frameworks/core/components_ng/pattern/text_field/text_field_model_static.h +++ b/frameworks/core/components_ng/pattern/text_field/text_field_model_static.h @@ -32,6 +32,10 @@ public: static void SetTextIndent(FrameNode* frameNode, const std::optional& valueOpt); static RefPtr CreateFrameNode(int32_t nodeId, const std::optional& placeholder, const std::optional& value, bool isTextArea); + static RefPtr CreateTextInputNode( + int32_t nodeId, const std::optional& placeholder, const std::optional& value); + static RefPtr CreateTextAreaNode( + int32_t nodeId, const std::optional& placeholder, const std::optional& value); static void SetAdaptMinFontSize(FrameNode* frameNode, const std::optional& valueOpt); static void SetAdaptMaxFontSize(FrameNode* frameNode, const std::optional& valueOpt); static void SetHeightAdaptivePolicy(FrameNode* frameNode, const std::optional& valueOpt); diff --git a/frameworks/core/interfaces/native/implementation/text_area_modifier.cpp b/frameworks/core/interfaces/native/implementation/text_area_modifier.cpp index 7b3f9c6998660de84909cd3fa5c770a3e2bfd7e2..932607ba0258259d83114d2ea41360c867098e83 100644 --- a/frameworks/core/interfaces/native/implementation/text_area_modifier.cpp +++ b/frameworks/core/interfaces/native/implementation/text_area_modifier.cpp @@ -32,7 +32,7 @@ namespace TextAreaModifier { Ark_NativePointer ConstructImpl(Ark_Int32 id, Ark_Int32 flags) { - auto frameNode = TextFieldModelNG::CreateTextAreaNode(id, u"", u""); + auto frameNode = TextFieldModelStatic::CreateTextAreaNode(id, u"", u""); CHECK_NULL_RETURN(frameNode, nullptr); frameNode->IncRefCount(); return AceType::RawPtr(frameNode); diff --git a/frameworks/core/interfaces/native/implementation/text_input_modifier.cpp b/frameworks/core/interfaces/native/implementation/text_input_modifier.cpp index 09baa9a071edc1698e9d6908b3074bef3c5e4120..52e065d49319731369f54c8d69275a2fe37f9a81 100644 --- a/frameworks/core/interfaces/native/implementation/text_input_modifier.cpp +++ b/frameworks/core/interfaces/native/implementation/text_input_modifier.cpp @@ -84,7 +84,7 @@ namespace TextInputModifier { Ark_NativePointer ConstructImpl(Ark_Int32 id, Ark_Int32 flags) { - auto frameNode = TextFieldModelNG::CreateTextInputNode(id, u"", u""); + auto frameNode = TextFieldModelStatic::CreateTextInputNode(id, u"", u""); CHECK_NULL_RETURN(frameNode, nullptr); frameNode->IncRefCount(); return AceType::RawPtr(frameNode); diff --git a/test/unittest/core/pattern/text_input/text_input_modify_test.cpp b/test/unittest/core/pattern/text_input/text_input_modify_test.cpp index 344b46ce89b02adeb6bd4b08763a515dd78faa6d..7c9aea252d2e0acd371a7575e2c7855cfd0002c2 100644 --- a/test/unittest/core/pattern/text_input/text_input_modify_test.cpp +++ b/test/unittest/core/pattern/text_input/text_input_modify_test.cpp @@ -1519,7 +1519,7 @@ HWTEST_F(TextFieldModifyTest, CreateFrameNode001, TestSize.Level1) /** * @tc.steps: step1. Initialize text input. */ - auto frameNode1 = TextFieldModelNG::CreateTextInputNode(ID, u"", u"place"); + auto frameNode1 = TextFieldModelNG::CreateTextInputNode(ID, u"", u""); EXPECT_NE(frameNode1, nullptr); /**