diff options
| author | Po Lu <luangruo@yahoo.com> | 2023-03-04 15:55:09 +0800 |
|---|---|---|
| committer | Po Lu <luangruo@yahoo.com> | 2023-03-04 15:55:09 +0800 |
| commit | 2634765bc382c27e2d11dc14174ca80d9cf41e15 (patch) | |
| tree | 3ef522e33fec01fbe0447dfc10306e6e58e17d8d /java/org/gnu/emacs/EmacsActivity.java | |
| parent | 39a7e6b79fdeafc539a36f6831d922a2622cb679 (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.java | 17 |
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. */ |
