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.
This commit is contained in:
Po Lu 2025-02-17 11:33:50 +08:00
parent e34ea5db5f
commit e3dc0ea254

View file

@ -271,20 +271,26 @@ private static class Coordinate
}
}
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;