Index: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
index 9733a58784af0c70ff24a72caa08e94a4c75e899..8c6c08bd5550de2c2772003b1a73bbbb11419111 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java |
@@ -292,6 +292,7 @@ public class ContentViewCore |
// Lazily created paste popup menu, triggered either via long press in an |
// editable region or from tapping the insertion handle. |
private PastePopupMenu mPastePopupMenu; |
+ private boolean mWasPastePopupShowingOnInsertionDragStart; |
private PopupTouchHandleDrawableDelegate mTouchHandleDelegate; |
@@ -2191,13 +2192,21 @@ public class ContentViewCore |
mHasInsertion = true; |
break; |
- case SelectionEventType.INSERTION_MOVED: |
- // TODO(jdduke): Handle case where movement triggered by focus. |
+ case SelectionEventType.INSERTION_DRAG_STARTED: |
+ mWasPastePopupShowingOnInsertionDragStart = getPastePopup().isShowing(); |
hidePastePopup(); |
break; |
+ case SelectionEventType.INSERTION_MOVED: |
+ if (getPastePopup().isShowing() && !isScrollInProgress()) { |
+ showPastePopup((int) posXDip, (int) posYDip); |
+ } else { |
+ hidePastePopup(); |
+ } |
+ break; |
+ |
case SelectionEventType.INSERTION_TAPPED: |
- if (getPastePopup().isShowing()) |
+ if (mWasPastePopupShowingOnInsertionDragStart) |
mPastePopupMenu.hide(); |
else |
showPastePopup((int) posXDip, (int) posYDip); |
@@ -2205,6 +2214,7 @@ public class ContentViewCore |
case SelectionEventType.INSERTION_CLEARED: |
mHasInsertion = false; |
+ mWasPastePopupShowingOnInsertionDragStart = false; |
hidePastePopup(); |
break; |