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

Commit 049f6adf authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed a bug where the notification texts wouldn't animate

If the texts were the same but one had an ellipsis and the
other didn't, things were not animating nicely.

Bug: 27419215
Change-Id: Iaa9611e1cf60b6fe71113b76f36ab5c24e461961
parent 19c76993
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.statusbar.notification;

import android.text.Layout;
import android.text.TextUtils;
import android.util.Pools;
import android.view.View;
@@ -28,14 +29,13 @@ public class TextViewTransformState extends TransformState {

    private static Pools.SimplePool<TextViewTransformState> sInstancePool
            = new Pools.SimplePool<>(40);
    private CharSequence mText;
    private TextView mText;

    @Override
    public void initFrom(View view) {
        super.initFrom(view);
        if (view instanceof TextView) {
            TextView txt = (TextView) view;
            mText = txt.getText();
            mText = (TextView) view;
        }
    }

@@ -43,11 +43,27 @@ public class TextViewTransformState extends TransformState {
    protected boolean sameAs(TransformState otherState) {
        if (otherState instanceof TextViewTransformState) {
            TextViewTransformState otherTvs = (TextViewTransformState) otherState;
            return TextUtils.equals(otherTvs.mText, mText);
            if(TextUtils.equals(otherTvs.mText.getText(), mText.getText())) {
                int ownEllipsized = getEllipsisCount();
                int otherEllipsized = otherTvs.getEllipsisCount();
                return ownEllipsized == otherEllipsized;
            }
        }
        return super.sameAs(otherState);
    }

    private int getEllipsisCount() {
        Layout l = mText.getLayout();
        if (l != null) {
            int lines = l.getLineCount();
            if (lines > 0) {
                // we only care about the first line
                return l.getEllipsisCount(0);
            }
        }
        return 0;
    }

    public static TextViewTransformState obtain() {
        TextViewTransformState instance = sInstancePool.acquire();
        if (instance != null) {