From 6f0104bfb56942a47f3d8205ddabe94e6136a6b8 Mon Sep 17 00:00:00 2001 From: zhouyongfei Date: Wed, 16 Mar 2022 15:35:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A1=AC=E9=94=AE=E7=9B=98?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E6=8E=A5=E5=8F=A3=E4=B8=BA=E5=AD=90=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhouyongfei --- .../src/js_keyboard_delegate_listener.cpp | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/interfaces/kits/js/napi/inputmethodengine/src/js_keyboard_delegate_listener.cpp b/interfaces/kits/js/napi/inputmethodengine/src/js_keyboard_delegate_listener.cpp index 9eadaef..df0bb2e 100644 --- a/interfaces/kits/js/napi/inputmethodengine/src/js_keyboard_delegate_listener.cpp +++ b/interfaces/kits/js/napi/inputmethodengine/src/js_keyboard_delegate_listener.cpp @@ -149,22 +149,28 @@ namespace MiscServices { std::lock_guard lock(mMutex); IMSA_HILOGI("JsKeyboardDelegateListener::OnKeyEvent"); - NativeValue* nativeValue = engine_->CreateObject(); - NativeObject* object = ConvertNativeValueTo(nativeValue); - if (object == nullptr) { - IMSA_HILOGI("Failed to convert rect to jsObject"); - return false; - } - NativeValue* argv[] = {nativeValue}; - std::string methodName; - if (keyStatus == 2) { - methodName = "keyDown"; - } else { - methodName = "keyUp"; - } - object->SetProperty("keyCode", CreateJsValue(*engine_, static_cast(keyCode))); - object->SetProperty("keyAction", CreateJsValue(*engine_, static_cast(keyStatus))); - return CallJsMethodReturnBool(methodName, argv, ArraySize(argv)); + bool result = false; + auto task = [this, keyCode, keyStatus, &result] () { + NativeValue* nativeValue = engine_->CreateObject(); + NativeObject* object = ConvertNativeValueTo(nativeValue); + if (object == nullptr) { + IMSA_HILOGI("Failed to convert rect to jsObject"); + return false; + } + NativeValue* argv[] = {nativeValue}; + std::string methodName; + if (keyStatus == 2) { + methodName = "keyDown"; + } else { + methodName = "keyUp"; + } + object->SetProperty("keyCode", CreateJsValue(*engine_, static_cast(keyCode))); + object->SetProperty("keyAction", CreateJsValue(*engine_, static_cast(keyStatus))); + return CallJsMethodReturnBool(methodName, argv, ArraySize(argv)); + }; + + mainHandler_->PostSyncTask(task); + return result; } void JsKeyboardDelegateListener::OnCursorUpdate(int32_t positionX, int32_t positionY, int height)