mirror of
https://github.com/fcitx5-android/fcitx5-android.git
synced 2026-08-02 20:16:06 +08:00
Make a new JNI method focusOutIn
less overhead than calling into native twice
This commit is contained in:
parent
4a955a1959
commit
23c4d318b6
@ -992,6 +992,15 @@ Java_org_fcitx_fcitx5_android_core_Fcitx_focusInputContext(JNIEnv *env, jclass c
|
||||
Fcitx::Instance().focusInputContext(focus);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_fcitx_fcitx5_android_core_Fcitx_focusInputContextOutIn(JNIEnv *env, jclass clazz) {
|
||||
RETURN_IF_NOT_RUNNING
|
||||
auto& instance = Fcitx::Instance();
|
||||
instance.focusInputContext(false);
|
||||
instance.focusInputContext(true);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_fcitx_fcitx5_android_core_Fcitx_activateInputContext(JNIEnv *env, jclass clazz, jint uid, jstring pkg_name) {
|
||||
|
||||
@ -165,6 +165,7 @@ class Fcitx(private val context: Context) : FcitxAPI, FcitxLifecycleOwner {
|
||||
withFcitxContext { setFcitxClipboard(string, password) }
|
||||
|
||||
override suspend fun focus(focus: Boolean) = withFcitxContext { focusInputContext(focus) }
|
||||
override suspend fun focusOutIn() = withFcitxContext { focusInputContextOutIn() }
|
||||
override suspend fun activate(uid: Int, pkgName: String) =
|
||||
withFcitxContext { activateInputContext(uid, pkgName) }
|
||||
|
||||
@ -344,6 +345,9 @@ class Fcitx(private val context: Context) : FcitxAPI, FcitxLifecycleOwner {
|
||||
@JvmStatic
|
||||
external fun focusInputContext(focus: Boolean)
|
||||
|
||||
@JvmStatic
|
||||
external fun focusInputContextOutIn()
|
||||
|
||||
@JvmStatic
|
||||
external fun activateInputContext(uid: Int, pkgName: String)
|
||||
|
||||
|
||||
@ -91,6 +91,7 @@ interface FcitxAPI {
|
||||
suspend fun triggerUnicode()
|
||||
|
||||
suspend fun focus(focus: Boolean = true)
|
||||
suspend fun focusOutIn()
|
||||
suspend fun activate(uid: Int, pkgName: String)
|
||||
suspend fun deactivate(uid: Int)
|
||||
suspend fun setCapFlags(flags: CapabilityFlags)
|
||||
|
||||
@ -843,8 +843,7 @@ class FcitxInputMethodService : LifecycleInputMethodService() {
|
||||
// `fcitx.reset()` here would commit preedit after new cursor position
|
||||
// since we have `ClientUnfocusCommit`, focus out and in would do the trick
|
||||
postFcitxJob {
|
||||
focus(false)
|
||||
focus(true)
|
||||
focusOutIn()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -992,8 +991,7 @@ class FcitxInputMethodService : LifecycleInputMethodService() {
|
||||
}
|
||||
resetComposingState()
|
||||
postFcitxJob {
|
||||
focus(false)
|
||||
focus(true)
|
||||
focusOutIn()
|
||||
}
|
||||
showingDialog?.dismiss()
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user