From 50ac6cb9820da352bd5e89596b17561878e969cc Mon Sep 17 00:00:00 2001 From: George Mount Date: Mon, 29 Sep 2014 16:56:22 -0700 Subject: Clear preordered list after use. Bug 17671834 Bug 17697944 Change-Id: I0ba46f32661869db0c925b00342211ea543e2f88 --- core/java/android/view/GhostView.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'core/java/android/view/GhostView.java') diff --git a/core/java/android/view/GhostView.java b/core/java/android/view/GhostView.java index 50c927a..20baad0 100644 --- a/core/java/android/view/GhostView.java +++ b/core/java/android/view/GhostView.java @@ -324,19 +324,27 @@ public class GhostView extends View { final ArrayList preorderedList = parent.buildOrderedChildList(); final boolean customOrder = preorderedList == null && parent.isChildrenDrawingOrderEnabled(); + + // This default value shouldn't be used because both view and comparedWith + // should be in the list. If there is an error, then just return an arbitrary + // view is on top. + boolean isOnTop = true; for (int i = 0; i < childrenCount; i++) { int childIndex = customOrder ? parent.getChildDrawingOrder(childrenCount, i) : i; final View child = (preorderedList == null) ? parent.getChildAt(childIndex) : preorderedList.get(childIndex); if (child == view) { - return false; + isOnTop = false; + break; } else if (child == comparedWith) { - return true; + isOnTop = true; + break; } } - // Shouldn't get here. Neither of the children is in the parent. - // Just return an arbitrary one. - return true; + if (preorderedList != null) { + preorderedList.clear(); + } + return isOnTop; } } -- cgit v1.1