summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsActivity.java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-03-04 15:55:09 +0800
committerPo Lu <luangruo@yahoo.com>2023-03-04 15:55:09 +0800
commit2634765bc382c27e2d11dc14174ca80d9cf41e15 (patch)
tree3ef522e33fec01fbe0447dfc10306e6e58e17d8d /java/org/gnu/emacs/EmacsActivity.java
parent39a7e6b79fdeafc539a36f6831d922a2622cb679 (diff)
Improve context menus on old versions of Android
* java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): New field `lastClosedMenu'. (onContextMenuClosed): Don't send event if a menu is closed twice in a row. Also, clear wasSubmenuSelected immediately. * java/org/gnu/emacs/EmacsContextMenu.java: Display submenus manually in Android 6.0 and earlier. * java/org/gnu/emacs/EmacsView.java (onCreateContextMenu) (popupMenu): Adjust accordingly.
Diffstat (limited to 'java/org/gnu/emacs/EmacsActivity.java')
-rw-r--r--java/org/gnu/emacs/EmacsActivity.java17
1 files changed, 15 insertions, 2 deletions
diff --git a/java/org/gnu/emacs/EmacsActivity.java b/java/org/gnu/emacs/EmacsActivity.java
index 62bef33fab3..13002d5d0e5 100644
--- a/java/org/gnu/emacs/EmacsActivity.java
+++ b/java/org/gnu/emacs/EmacsActivity.java
@@ -65,6 +65,9 @@ public class EmacsActivity extends Activity
/* Whether or not this activity is fullscreen. */
private boolean isFullscreen;
+ /* The last context menu to be closed. */
+ private Menu lastClosedMenu;
+
static
{
focusedActivities = new ArrayList<EmacsActivity> ();
@@ -308,9 +311,19 @@ public class EmacsActivity extends Activity
Log.d (TAG, "onContextMenuClosed: " + menu);
/* See the comment inside onMenuItemClick. */
+
if (EmacsContextMenu.wasSubmenuSelected
- && menu.toString ().contains ("ContextMenuBuilder"))
- return;
+ || menu == lastClosedMenu)
+ {
+ EmacsContextMenu.wasSubmenuSelected = false;
+ lastClosedMenu = menu;
+ return;
+ }
+
+ /* lastClosedMenu is set because Android apparently calls this
+ function twice. */
+
+ lastClosedMenu = null;
/* Send a context menu event given that no menu item has already
been selected. */