From 0d88f3f20aa00c5a7bcb078cb34c7357e2ad4184 Mon Sep 17 00:00:00 2001 From: kangshihui Date: Thu, 17 Jul 2025 11:21:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B7=A8=E5=B9=B3=E5=8F=B0on?= =?UTF-8?q?WillInsert=E3=80=81onDidInsert=E3=80=81onWillDelete=E3=80=81OnD?= =?UTF-8?q?idDelete=E3=80=81OnWillChange=E4=BA=8B=E4=BB=B6=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E6=97=A0=E6=B3=95=E8=A7=A6=E5=8F=91=20Signed-off-by:k?= =?UTF-8?q?angshihui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I72e4f814427c790fcb251b83a590c4685d6a20fc --- .../pattern/text_field/text_field_pattern.cpp | 14 ++++++++++ .../text_field_pattern_testnine.cpp | 28 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/frameworks/core/components_ng/pattern/text_field/text_field_pattern.cpp b/frameworks/core/components_ng/pattern/text_field/text_field_pattern.cpp index 4225c6e8d8e..c80c434943c 100644 --- a/frameworks/core/components_ng/pattern/text_field/text_field_pattern.cpp +++ b/frameworks/core/components_ng/pattern/text_field/text_field_pattern.cpp @@ -5950,6 +5950,20 @@ void TextFieldPattern::UpdateEditingValue(const std::shared_ptrselection.baseOffset -= deleteSize; } } +#ifdef CROSS_PLATFORM + if (value->isDelete) { + HandleOnDelete(true); + return; + } else { +#ifdef ANDROID_PLATFORM + if (value->appendText.empty()) { + return; + } +#endif + InsertValue(UtfUtils::Str8DebugToStr16(value->appendText), true); + return; + } +#endif #endif UpdateEditingValueToRecord(); contentController_->SetTextValue(result); diff --git a/test/unittest/core/pattern/text_input/text_field_pattern_testnine.cpp b/test/unittest/core/pattern/text_input/text_field_pattern_testnine.cpp index ce9bd0e21b7..3da30dc5760 100644 --- a/test/unittest/core/pattern/text_input/text_field_pattern_testnine.cpp +++ b/test/unittest/core/pattern/text_input/text_field_pattern_testnine.cpp @@ -1206,4 +1206,32 @@ HWTEST_F(TextFieldPatternTestNine, GetMaxIndent, TestSize.Level0) width = textFieldLayoutAlgorithm->GetMaxIndent(&layoutWrapper, std::numeric_limits::infinity()); EXPECT_EQ(width, 200.0f); } + +/** + * @tc.name: UpdateEditingValue001 + * @tc.desc: test UpdateEditingValue + * @tc.type: FUNC + */ +HWTEST_F(TextFieldPatternTestNine, UpdateEditingValue001, TestSize.Level0) +{ + /** + * @tc.steps: step1. Create Text filed node with set maxLength 10 + * @tc.expected: maxLength is 10 + */ + CreateTextField(DEFAULT_TEXT, "", [](TextFieldModelNG model) { + model.SetMaxLength(10); + }); + TextEditingValue value; + TextSelection selection; + value.text = "12345678901234567890"; + selection.baseOffset = value.text.length(); + value.selection = selection; + + /** + * @tc.step: step2. Call UpdateEditingValue + */ + pattern_->UpdateEditingValue(std::make_shared(value)); + FlushLayoutTask(frameNode_); + EXPECT_EQ(pattern_->GetTextValue().length(), 10); +} } // namespace OHOS::Ace::NG \ No newline at end of file -- Gitee