1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-13 23:10:26 -08:00

Update Android port

* java/org/gnu/emacs/EmacsInputConnection.java
(EmacsInputConnection, beginBatchEdit, reset, endBatchEdit):
Keep track of the number of batch edits and return an
appropriate value.
(takeSnapshot): Implement function.
* java/org/gnu/emacs/EmacsNative.java (takeSnapshot): New
function.
* java/org/gnu/emacs/EmacsService.java (resetIC): Improve
debugging output.
* java/org/gnu/emacs/EmacsView.java (onCreateInputConnection):
Call `reset' to clear the UI side batch edit count.
* src/androidterm.c (struct
android_get_surrounding_text_context): New fields
`conversion_start' and `conversion_end'.
(android_get_surrounding_text): Return the conversion region.
(android_get_surrounding_text_internal, NATIVE_NAME): Factor out
`getSurroundingText'.
(takeSnapshot): New function.
This commit is contained in:
Po Lu 2023-06-15 12:36:50 +08:00
parent ca120044ac
commit 363e293cc9
5 changed files with 203 additions and 26 deletions

View file

@ -767,8 +767,31 @@ public final class EmacsService extends Service
public void
resetIC (EmacsWindow window, int icMode)
{
int oldMode;
if (DEBUG_IC)
Log.d (TAG, "resetIC: " + window);
Log.d (TAG, "resetIC: " + window + ", " + icMode);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU
&& (oldMode = window.view.getICMode ()) == icMode
/* Don't do this if there is currently no input
connection. */
&& oldMode != IC_MODE_NULL)
{
if (DEBUG_IC)
Log.d (TAG, "resetIC: calling invalidateInput");
/* Android 33 and later allow the IM reset to be optimized out
and replaced by a call to `invalidateInput', which is much
faster, as it does not involve resetting the input
connection. */
icBeginSynchronous ();
window.view.imManager.invalidateInput (window.view);
icEndSynchronous ();
return;
}
window.view.setICMode (icMode);