diff options
author | Patrick Dubroy <dubroy@google.com> | 2011-03-09 15:58:32 -0800 |
---|---|---|
committer | Patrick Dubroy <dubroy@google.com> | 2011-03-09 16:01:32 -0800 |
commit | a017c0379c30e0272a88a93d05b6a30e28955b88 (patch) | |
tree | cdbbf4d11a0e6d9cf6aa550d77eaf8851fff7a24 /src/com | |
parent | bf32dbbbff0b235eaa21f2a5af679b8950a280e9 (diff) | |
download | android_packages_apps_Trebuchet-a017c0379c30e0272a88a93d05b6a30e28955b88.tar.gz android_packages_apps_Trebuchet-a017c0379c30e0272a88a93d05b6a30e28955b88.tar.bz2 android_packages_apps_Trebuchet-a017c0379c30e0272a88a93d05b6a30e28955b88.zip |
Fix 3306005: NPE at android.widget.TextView.getExtendedPaddingTop()
Problem occurs when we call getExtendedPaddingTop() before the View
has been layed out. Fix is to not create the glowing outline until
we are actually drawing the BubbleTextView.
Change-Id: Icef7bbe69b07bf12c36c59a8b57aec5d455d5a99
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/launcher2/BubbleTextView.java | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java index f708e2fda..a8db330b3 100644 --- a/src/com/android/launcher2/BubbleTextView.java +++ b/src/com/android/launcher2/BubbleTextView.java @@ -152,8 +152,14 @@ public class BubbleTextView extends TextView implements VisibilityChangedBroadca mPressedOrFocusedBackground = null; } if (isFocused()) { - mPressedOrFocusedBackground = createGlowingOutline( - mTempCanvas, mFocusedGlowColor, mFocusedOutlineColor); + if (mLayout == null) { + // In some cases, we get focus before we have been layed out. Set the + // background to null so that it will get created when the view is drawn. + mPressedOrFocusedBackground = null; + } else { + mPressedOrFocusedBackground = createGlowingOutline( + mTempCanvas, mFocusedGlowColor, mFocusedOutlineColor); + } mStayPressed = false; invalidatePressedOrFocusedBackground(); } @@ -190,7 +196,7 @@ public class BubbleTextView extends TextView implements VisibilityChangedBroadca destCanvas.save(); destCanvas.translate(-getScrollX() + padding / 2, -getScrollY() + padding / 2); destCanvas.clipRect(clipRect, Op.REPLACE); - draw(destCanvas); + drawImpl(destCanvas, true); destCanvas.restore(); } @@ -265,8 +271,19 @@ public class BubbleTextView extends TextView implements VisibilityChangedBroadca } invalidatePressedOrFocusedBackground(); } + @Override public void draw(Canvas canvas) { + drawImpl(canvas, false); + } + + private void drawImpl(Canvas canvas, boolean preventRecursion) { + // If the View is focused but the focused background hasn't been created yet, create it now + if (!preventRecursion && isFocused() && mPressedOrFocusedBackground == null) { + mPressedOrFocusedBackground = createGlowingOutline( + mTempCanvas, mFocusedGlowColor, mFocusedOutlineColor); + } + if (mPressedOrFocusedBackground != null && (isPressed() || isFocused() || mStayPressed)) { // The blue glow can extend outside of our clip region, so we first temporarily expand // the canvas's clip region |