From 2880294cc6c7dad418b553f856b85aef112c6432 Mon Sep 17 00:00:00 2001 From: Gilles Debunne Date: Wed, 24 Nov 2010 11:23:53 -0800 Subject: [PATCH] Lazily create the paste popup window. Change-Id: I271a790bd652cdcdc221896ede9f99858a24cc7a --- core/java/android/widget/TextView.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 215bb2b9f0727..5e4a51420c9db 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -8258,6 +8258,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private int mLastParentY; private int mContainerPositionX, mContainerPositionY; private long mTouchTimer; + private boolean mHasPastePopupWindow = false; private PastePopupMenu mPastePopupWindow; public static final int LEFT = 0; @@ -8310,7 +8311,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mDrawable = mSelectHandleCenter; handleWidth = mDrawable.getIntrinsicWidth(); mHotspotX = handleWidth / 2; - mPastePopupWindow = new PastePopupMenu(); + mHasPastePopupWindow = true; break; } } @@ -8478,9 +8479,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mLastParentX = coords[0]; mLastParentY = coords[1]; mIsDragging = true; - if (mPastePopupWindow != null) { + if (mHasPastePopupWindow) { mTouchTimer = SystemClock.uptimeMillis(); - if (mPastePopupWindow.isShowing()) { + if (mPastePopupWindow != null && mPastePopupWindow.isShowing()) { // Tapping on the handle again dismisses the displayed paste view, mPastePopupWindow.hide(); // and makes sure the action up does not display the paste view. @@ -8548,7 +8549,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } void showPastePopupWindow() { - if (mPastePopupWindow != null) { + if (mHasPastePopupWindow) { + if (mPastePopupWindow == null) { + // Lazy initialisation: create when actually shown only. + mPastePopupWindow = new PastePopupMenu(); + } mPastePopupWindow.show(); } }