1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-05 22:20:24 -08:00

Improve compatibility with Android's default text editor

* java/org/gnu/emacs/EmacsView.java (showOnScreenKeyboard):
Request a selection update if `inputConnection' has been
established, to more closely emulate the OS text editing widget.
(onCreateInputConnection) [EmacsService.DEBUG_IC]: Print current
selection values before reporting them.
This commit is contained in:
Po Lu 2024-05-22 22:00:02 +08:00
parent 394aac7b18
commit 70effed88d

View file

@ -45,6 +45,8 @@ import android.graphics.Paint;
import android.os.Build;
import android.util.Log;
import java.util.Arrays;
/* This is an Android view which has a back and front buffer. When
swapBuffers is called, the back buffer is swapped to the front
buffer, and any damage is invalidated. frontBitmap and backBitmap
@ -775,6 +777,15 @@ public final class EmacsView extends ViewGroup
imManager.showSoftInput (this, 0);
isCurrentlyTextEditor = true;
/* The OS text editing widget unconditionally reports the current
values of the selection to the input method after calls to
showSoftInput, which is redundant if inputConnection exists but
is now relied upon in such circumstances by the OS's default
input method, and must therefore be faithfully reproduced on our
part. */
if (inputConnection != null)
EmacsNative.requestSelectionUpdate (window.handle);
}
public void
@ -831,6 +842,12 @@ public final class EmacsView extends ViewGroup
selection = EmacsService.viewGetSelection (window.handle);
if (EmacsService.DEBUG_IC)
Log.d (TAG, ("onCreateInputConnection: "
+ (selection != null
? Arrays.toString (selection)
: "(unavailable)")));
if (selection == null)
{
/* If the selection could not be obtained, return 0 by 0.