summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsActivity.java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-02-11 10:26:34 +0800
committerPo Lu <luangruo@yahoo.com>2023-02-11 10:26:34 +0800
commitab48881a2fb72df016f2a00bc107e5a35a411a9d (patch)
treef2cc50a7ac906e40562e080a725ac98daf9ed484 /java/org/gnu/emacs/EmacsActivity.java
parentc4c34f72a123c4177a21c934c4e414cfe9e3c553 (diff)
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.
Diffstat (limited to 'java/org/gnu/emacs/EmacsActivity.java')
-rw-r--r--java/org/gnu/emacs/EmacsActivity.java13
1 files changed, 12 insertions, 1 deletions
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<EmacsActivity> 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);