1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-28 16:21:07 -08:00

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.
This commit is contained in:
Po Lu 2023-03-04 15:55:09 +08:00
parent 39a7e6b79f
commit 2634765bc3
3 changed files with 79 additions and 34 deletions

View file

@ -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. */