diff options
| author | Po Lu <luangruo@yahoo.com> | 2023-02-11 10:26:34 +0800 |
|---|---|---|
| committer | Po Lu <luangruo@yahoo.com> | 2023-02-11 10:26:34 +0800 |
| commit | ab48881a2fb72df016f2a00bc107e5a35a411a9d (patch) | |
| tree | f2cc50a7ac906e40562e080a725ac98daf9ed484 /java/org/gnu/emacs/EmacsActivity.java | |
| parent | c4c34f72a123c4177a21c934c4e414cfe9e3c553 (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.java | 13 |
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); |
