diff options
| author | Po Lu <luangruo@yahoo.com> | 2025-02-17 11:33:50 +0800 |
|---|---|---|
| committer | Po Lu <luangruo@yahoo.com> | 2025-02-17 11:33:50 +0800 |
| commit | e3dc0ea2544dc09908546c6e6baba47371cbc176 (patch) | |
| tree | eb2ff5e6a1346d74183512d39193ce50f63b9dad /java/org/gnu/emacs/EmacsWindow.java | |
| parent | e34ea5db5f1c09582e3779828ba248eec5769eb2 (diff) | |
Fix crash in frame deletion on Android
* java/org/gnu/emacs/EmacsWindow.java (destroyHandle):
Invalidate the input focus in the UI thread, as is proper.
Diffstat (limited to 'java/org/gnu/emacs/EmacsWindow.java')
| -rw-r--r-- | java/org/gnu/emacs/EmacsWindow.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/java/org/gnu/emacs/EmacsWindow.java b/java/org/gnu/emacs/EmacsWindow.java index f935850b22b..fec95526835 100644 --- a/java/org/gnu/emacs/EmacsWindow.java +++ b/java/org/gnu/emacs/EmacsWindow.java @@ -271,20 +271,26 @@ public final class EmacsWindow extends EmacsHandleObject } } - EmacsActivity.invalidateFocus (4); - + /* This is just a sanity test and is not reliable since `children' + may be modified between isEmpty and handle destruction. */ if (!children.isEmpty ()) throw new IllegalStateException ("Trying to destroy window with " + "children!"); /* Remove the view from its parent and make it invisible. */ EmacsService.SERVICE.runOnUiThread (new Runnable () { + @Override public void run () { ViewManager parent; EmacsWindowManager manager; + /* Invalidate the focus; this should transfer the input focus + to the next eligible window as this window is no longer + present in parent.children. */ + EmacsActivity.invalidateFocus (4); + if (EmacsActivity.focusedWindow == EmacsWindow.this) EmacsActivity.focusedWindow = null; |
