Merge "Lazily create the paste popup window."
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 215bb2b..5e4a514 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -8258,6 +8258,7 @@
         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 @@
                 mDrawable = mSelectHandleCenter;
                 handleWidth = mDrawable.getIntrinsicWidth();
                 mHotspotX = handleWidth / 2;
-                mPastePopupWindow = new PastePopupMenu();
+                mHasPastePopupWindow = true;
                 break;
             }
             }
@@ -8478,9 +8479,9 @@
                 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 @@
         }
 
         void showPastePopupWindow() {
-            if (mPastePopupWindow != null) {
+            if (mHasPastePopupWindow) {
+                if (mPastePopupWindow == null) {
+                    // Lazy initialisation: create when actually shown only.
+                    mPastePopupWindow = new PastePopupMenu();
+                }
                 mPastePopupWindow.show();
             }
         }