summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsContextMenu.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/org/gnu/emacs/EmacsContextMenu.java')
-rw-r--r--java/org/gnu/emacs/EmacsContextMenu.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/java/org/gnu/emacs/EmacsContextMenu.java b/java/org/gnu/emacs/EmacsContextMenu.java
index 17e6033377d..2bbf2a313d6 100644
--- a/java/org/gnu/emacs/EmacsContextMenu.java
+++ b/java/org/gnu/emacs/EmacsContextMenu.java
@@ -361,8 +361,23 @@ public final class EmacsContextMenu
public Boolean
call ()
{
+ boolean rc;
+
lastMenuEventSerial = serial;
- return display1 (window, xPosition, yPosition);
+ rc = display1 (window, xPosition, yPosition);
+
+ /* Android 3.0 to Android 7.0 perform duplicate calls to
+ onContextMenuClosed the second time a context menu is
+ dismissed. Since the second call after such a dismissal is
+ otherwise liable to prematurely cancel any context menu
+ displayed immediately afterwards, ignore calls received
+ within 150 milliseconds of this menu's being displayed. */
+
+ if (rc && Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB
+ && Build.VERSION.SDK_INT < Build.VERSION_CODES.N)
+ wasSubmenuSelected = System.currentTimeMillis () - 150;
+
+ return rc;
}
});