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 da7dc07b2bfb3..d282f259df812 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -3023,6 +3023,11 @@ public class NotificationStackScrollLayout extends ViewGroup public void setAnimationsEnabled(boolean animationsEnabled) { mAnimationsEnabled = animationsEnabled; updateNotificationAnimationStates(); + if (!animationsEnabled) { + mSwipedOutViews.clear(); + mChildrenToRemoveAnimated.clear(); + clearTemporaryViewsInGroup(this); + } } private void updateNotificationAnimationStates() { @@ -3090,6 +3095,21 @@ public class NotificationStackScrollLayout extends ViewGroup @Override public void changeViewPosition(View child, int newIndex) { int currentIndex = indexOfChild(child); + + if (currentIndex == -1) { + boolean isTransient = false; + if (child instanceof ExpandableNotificationRow + && ((ExpandableNotificationRow)child).getTransientContainer() != null) { + isTransient = true; + } + Log.e(TAG, "Attempting to re-position " + + (isTransient ? "transient" : "") + + " view {" + + child + + "}"); + return; + } + if (child != null && child.getParent() == this && currentIndex != newIndex) { mChangePositionInProgress = true; ((ExpandableView)child).setChangingPosition(true); @@ -3569,17 +3589,17 @@ public class NotificationStackScrollLayout extends ViewGroup private void clearTemporaryViews() { // lets make sure nothing is in the overlay / transient anymore - clearTemporaryViews(this); + clearTemporaryViewsInGroup(this); for (int i = 0; i < getChildCount(); i++) { ExpandableView child = (ExpandableView) getChildAt(i); if (child instanceof ExpandableNotificationRow) { ExpandableNotificationRow row = (ExpandableNotificationRow) child; - clearTemporaryViews(row.getChildrenContainer()); + clearTemporaryViewsInGroup(row.getChildrenContainer()); } } } - private void clearTemporaryViews(ViewGroup viewGroup) { + private void clearTemporaryViewsInGroup(ViewGroup viewGroup) { while (viewGroup != null && viewGroup.getTransientViewCount() != 0) { viewGroup.removeTransientView(viewGroup.getTransientView(0)); }