From: Artur Świgoń Date: Thu, 9 Jun 2022 09:31:37 +0000 (+0200) Subject: [AT-SPI] Fix EditableTextControlAccessible::InsertText() X-Git-Tag: dali_2.1.27~5^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=4f335ad02ad68198e1900da14c9d17460660914f [AT-SPI] Fix EditableTextControlAccessible::InsertText() This method did not work when appending to the end of the text (including the case where the text was initially empty). Change-Id: I981531feb1eea3d067a06292104145d48de0a76f --- diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls.cpp index df21268..29aa513 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls.cpp @@ -598,6 +598,16 @@ int UtcDaliAccessibilityTextField(void) DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION ); DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION ); + // Insert into empty field + DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->InsertText(1, "xyz"), false, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->InsertText(0, "abc"), true, TEST_LOCATION); + DALI_TEST_EQUALS(text->GetText(0, 3), "abc", TEST_LOCATION); + + // Append at end + DALI_TEST_EQUALS(editabletext->InsertText(3, "xyz"), true, TEST_LOCATION); + DALI_TEST_EQUALS(text->GetText(0, 6), "abcxyz", TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION); DALI_TEST_EQUALS(editabletext->InsertText(1, "bc"), true, TEST_LOCATION); DALI_TEST_EQUALS(text->GetText(0, 6), "abcdef", TEST_LOCATION); @@ -699,6 +709,16 @@ int UtcDaliAccessibilityTextEditor(void) DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION ); DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION ); + // Insert into empty field + DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->InsertText(1, "xyz"), false, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->InsertText(0, "abc"), true, TEST_LOCATION); + DALI_TEST_EQUALS(text->GetText(0, 3), "abc", TEST_LOCATION); + + // Append at end + DALI_TEST_EQUALS(editabletext->InsertText(3, "xyz"), true, TEST_LOCATION); + DALI_TEST_EQUALS(text->GetText(0, 6), "abcxyz", TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION); DALI_TEST_EQUALS(editabletext->InsertText(1, "bc"), true, TEST_LOCATION); DALI_TEST_EQUALS(text->GetText(0, 6), "abcdef", TEST_LOCATION); diff --git a/dali-toolkit/internal/controls/text-controls/common-text-utils.cpp b/dali-toolkit/internal/controls/text-controls/common-text-utils.cpp index c1f4179..646bdbf 100644 --- a/dali-toolkit/internal/controls/text-controls/common-text-utils.cpp +++ b/dali-toolkit/internal/controls/text-controls/common-text-utils.cpp @@ -488,7 +488,7 @@ bool EditableTextControlAccessible::InsertText(std::size_t startPosition, std::s { auto text = GetWholeText(); - if(!ValidateRange(text, startPosition, startPosition + 1)) + if(!ValidateRange(text, startPosition, startPosition + 1) && !(startPosition == text.size())) { return false; }