diff options
3 files changed, 27 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java index c0e434046139..91418ad312bf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java @@ -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. */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java index d9e8bd91cace..29b0f4b75876 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java @@ -155,8 +155,21 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene } @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) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index 2ea95076d99e..9dfe36903f7f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -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); |