Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c48915e authored by Ahaan Ugale's avatar Ahaan Ugale
Browse files

UiTranslation: Temporary fix for crash due to length increases.

Ellipsizes the translated text if it's longer than the view text. This
fixes a crash in apps that operate on the view text based on layout
calculations made on the transformed text.

A proper fix will follow to modify the UiTranslationManger API to make
this compat behavior happen only on request, and probably change the
behavior to instead add padding to the view text to make it match the
translated text length.

Bug: 179693024
Test: atest CtsTranslationTestCases
Change-Id: I685ae4a9752c817db81f0d736f1d746b2e4a9839
parent de94a02e
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -78,11 +78,24 @@ public class TranslationTransformationMethod implements TransformationMethod2 {
        if (TextUtils.isEmpty(translatedText) || isWhitespace(translatedText.toString())) {
            return source;
        } else {
            // TODO(b/179693024): Remove this once we have the fix to pad the view text instead.
            translatedText = ellipsize(translatedText, ((TextView) view).getText().length());
            // TODO(b/174283799): apply the spans to the text
            return translatedText;
        }
    }

    private static CharSequence ellipsize(CharSequence text, int newLength) {
        if (text.length() <= newLength) {
            return text;
        }
        String ellipsis = String.valueOf('\u2026');
        if (newLength == 1) {
            return ellipsis;
        }
        return TextUtils.concat(TextUtils.trimToSize(text, newLength - 1), ellipsis);
    }

    @Override
    public void onFocusChanged(View view, CharSequence sourceText,
            boolean focused, int direction,