summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsInputConnection.java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-10-05 14:23:20 +0800
committerPo Lu <luangruo@yahoo.com>2023-10-05 14:23:20 +0800
commit123b77436e187c6254d4585d08135a44077528d1 (patch)
tree5257a4dbb4d5dc5d1446a58cec224903494bbbb5 /java/org/gnu/emacs/EmacsInputConnection.java
parent253f1aff1ab00e9794f3cfcf50e86e335f411242 (diff)
Introduce an input method callback required by Android 34
* java/org/gnu/emacs/EmacsInputConnection.java (replaceText): New function. * java/org/gnu/emacs/EmacsNative.java (replaceText): Declare native function. * src/androidgui.h (enum android_ime_operation): New operation ANDROID_IME_REPLACE_TEXT. * src/androidterm.c (android_handle_ime_event): Decode text when encountering an ANDROID_IME_REPLACE_TEXT operation. Return if decoding overflowed rather than presenting Qnil to textconv functions. (replaceText): New JNI function. * src/frame.h (enum text_conversion_operation): New operation TEXTCONV_REPLACE_TEXT. * src/textconv.c (really_commit_text): Move point to start if the composing region is set. (really_replace_text): New function. (handle_pending_conversion_events_1) <TEXTCONV_REPLACE_TEXT>: New case. (replace_text): New function. * src/textconv.h: Update prototypes.
Diffstat (limited to 'java/org/gnu/emacs/EmacsInputConnection.java')
-rw-r--r--java/org/gnu/emacs/EmacsInputConnection.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/java/org/gnu/emacs/EmacsInputConnection.java b/java/org/gnu/emacs/EmacsInputConnection.java
index c3764a7b29f..7f6331205cb 100644
--- a/java/org/gnu/emacs/EmacsInputConnection.java
+++ b/java/org/gnu/emacs/EmacsInputConnection.java
@@ -628,6 +628,21 @@ public final class EmacsInputConnection implements InputConnection
batchEditCount = 0;
}
+ @Override
+ public boolean
+ replaceText (int start, int end, CharSequence text,
+ int newCursorPosition, TextAttribute attributes)
+ {
+ if (EmacsService.DEBUG_IC)
+ Log.d (TAG, ("replaceText: " + text + ":: " + start + ","
+ + end + "," + newCursorPosition));
+
+ EmacsNative.replaceText (windowHandle, start, end,
+ text.toString (), newCursorPosition,
+ attributes);
+ return true;
+ }
+
public void