From ab48881a2fb72df016f2a00bc107e5a35a411a9d Mon Sep 17 00:00:00 2001 From: Po Lu Date: Sat, 11 Feb 2023 10:26:34 +0800 Subject: Fix displaying popup menus from a menu entry on Android * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity, onDestroy) (onWindowFocusChanged): Keep track of the last focused activity. * java/org/gnu/emacs/EmacsDialog.java (display1): Use it if there is no current focus. --- java/org/gnu/emacs/EmacsActivity.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'java/org/gnu/emacs/EmacsActivity.java') diff --git a/java/org/gnu/emacs/EmacsActivity.java b/java/org/gnu/emacs/EmacsActivity.java index 30eaf85805a..3156a144a0f 100644 --- a/java/org/gnu/emacs/EmacsActivity.java +++ b/java/org/gnu/emacs/EmacsActivity.java @@ -47,6 +47,9 @@ public class EmacsActivity extends Activity /* List of activities with focus. */ public static List focusedActivities; + /* The last activity to have been focused. */ + public static EmacsActivity lastFocusedActivity; + /* The currently focused window. */ public static EmacsWindow focusedWindow; @@ -215,6 +218,11 @@ public class EmacsActivity extends Activity manager.removeWindowConsumer (this, isMultitask || isFinishing ()); focusedActivities.remove (this); invalidateFocus (); + + /* Remove this activity from the static field, lest it leak. */ + if (lastFocusedActivity == this) + lastFocusedActivity = null; + super.onDestroy (); } @@ -223,7 +231,10 @@ public class EmacsActivity extends Activity onWindowFocusChanged (boolean isFocused) { if (isFocused && !focusedActivities.contains (this)) - focusedActivities.add (this); + { + focusedActivities.add (this); + lastFocusedActivity = this; + } else focusedActivities.remove (this); -- cgit v1.3