From c74bab6067cb95516b25e5650d5077441541ea1e Mon Sep 17 00:00:00 2001 From: Po Lu Date: Wed, 15 Mar 2023 09:46:01 +0800 Subject: Update Android port * doc/lispref/commands.texi (Misc Events): Document variable `disable-inhibit-text-conversion'. * java/org/gnu/emacs/EmacsDialog.java (display1): Try an activity that is certain to be focused first. * lisp/touch-screen.el (touch-screen-track-tap) (touch-screen-track-drag): Bind `disable-inhibit-text-conversion'. * src/keyboard.c (read_key_sequence): Only disable text conversion if an actual function or numeric key is found in the key sequence. (syms_of_keyboard): New variable `disable-inhibit-text-conversion'. * src/lread.c (read_filtered_event): Check new variable. * src/textconv.c (textconv_query): Remove unused label. --- java/org/gnu/emacs/EmacsDialog.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'java/org/gnu') diff --git a/java/org/gnu/emacs/EmacsDialog.java b/java/org/gnu/emacs/EmacsDialog.java index de5a37bd5c5..3a5f22021fc 100644 --- a/java/org/gnu/emacs/EmacsDialog.java +++ b/java/org/gnu/emacs/EmacsDialog.java @@ -244,23 +244,26 @@ public final class EmacsDialog implements DialogInterface.OnDismissListener AlertDialog dialog; Window window; - /* First, try to display a dialog using the service context. */ - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M - || Settings.canDrawOverlays (EmacsService.SERVICE)) - context = EmacsService.SERVICE; - else if (EmacsActivity.focusedActivities.isEmpty ()) + if (EmacsActivity.focusedActivities.isEmpty ()) { /* If focusedActivities is empty then this dialog may have been displayed immediately after a popup dialog is - dismissed. */ + dismissed. Or Emacs might legitimately be in the + background. Try the service context first if possible. */ - context = EmacsActivity.lastFocusedActivity; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M + || Settings.canDrawOverlays (EmacsService.SERVICE)) + context = EmacsService.SERVICE; + else + context = EmacsActivity.lastFocusedActivity; if (context == null) return false; } else + /* Display using the activity context when Emacs is in the + foreground, as this allows the dialog to be dismissed more + consistently. */ context = EmacsActivity.focusedActivities.get (0); Log.d (TAG, "display1: using context " + context); -- cgit v1.2.1