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

Commit 14503e27 authored by Adrian Roos's avatar Adrian Roos
Browse files

Fix clobbered RemoteInputView when changing position

Bug: 27357771
Change-Id: If6e5c943ce8939d343fd989bfed20b1b657c9c5d
parent 7014a3a8
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ public abstract class ExpandableView extends FrameLayout {
    private boolean mWillBeGone;
    private int mMinClipTopAmount = 0;
    private boolean mClipToActualHeight = true;
    private boolean mChangingPosition = false;

    public ExpandableView(Context context, AttributeSet attrs) {
        super(context, attrs);
@@ -407,6 +408,14 @@ public abstract class ExpandableView extends FrameLayout {
        return 0;
    }

    public void setChangingPosition(boolean changingPosition) {
        mChangingPosition = changingPosition;
    }

    public boolean isChangingPosition() {
        return mChangingPosition;
    }

    /**
     * A listener notifying when {@link #getActualHeight} changes.
     */
+16 −0
Original line number Diff line number Diff line
@@ -154,9 +154,22 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
        setVisibility(INVISIBLE);
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        if (mEntry.row.isChangingPosition()) {
            if (getVisibility() == VISIBLE && mEditText.isFocusable()) {
                mEditText.requestFocus();
            }
        }
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        if (mEntry.row.isChangingPosition()) {
            return;
        }
        mController.removeRemoteInput(mEntry);
    }

@@ -229,6 +242,9 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
        }

        private void defocusIfNeeded() {
            if (mDefocusListener.mEntry.row.isChangingPosition()) {
                return;
            }
            if (isFocusable() && isEnabled()) {
                setInnerFocusable(false);
                if (mDefocusListener != null) {
+2 −0
Original line number Diff line number Diff line
@@ -2252,8 +2252,10 @@ public class NotificationStackScrollLayout extends ViewGroup
        int currentIndex = indexOfChild(child);
        if (child != null && child.getParent() == this && currentIndex != newIndex) {
            mChangePositionInProgress = true;
            ((ExpandableView)child).setChangingPosition(true);
            removeView(child);
            addView(child, newIndex);
            ((ExpandableView)child).setChangingPosition(false);
            mChangePositionInProgress = false;
            if (mIsExpanded && mAnimationsEnabled && child.getVisibility() != View.GONE) {
                mChildrenChangingPositions.add(child);