From 4f335ad02ad68198e1900da14c9d17460660914f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Artur=20=C5=9Awigo=C5=84?= Date: Thu, 9 Jun 2022 11:31:37 +0200 Subject: [PATCH 1/1] [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 --- .../utc-Dali-Accessibility-Controls.cpp | 20 ++++++++++++++++++++ .../controls/text-controls/common-text-utils.cpp | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) 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; } -- 2.7.4