mirror of
https://gitee.com/openharmony/arkui_ace_engine
synced 2024-11-27 09:12:41 +00:00
dragController只在鼠标拖拽时启动监听
Signed-off-by: wangzhihao <wangzhihao42@huawei.com>
This commit is contained in:
parent
9391010713
commit
acd1fb200a
@ -118,6 +118,7 @@ void OnComplete(DragControllerAsyncCtx* asyncCtx);
|
|||||||
bool GetPixelMapByCustom(DragControllerAsyncCtx* asyncCtx);
|
bool GetPixelMapByCustom(DragControllerAsyncCtx* asyncCtx);
|
||||||
bool GetPixelMapArrayByCustom(DragControllerAsyncCtx* asyncCtx, napi_value customBuilder, int arrayLength);
|
bool GetPixelMapArrayByCustom(DragControllerAsyncCtx* asyncCtx, napi_value customBuilder, int arrayLength);
|
||||||
ParameterType getParameterType(DragControllerAsyncCtx* asyncCtx);
|
ParameterType getParameterType(DragControllerAsyncCtx* asyncCtx);
|
||||||
|
void SetMouseDragMonitorState(bool state);
|
||||||
|
|
||||||
class DragAction {
|
class DragAction {
|
||||||
public:
|
public:
|
||||||
@ -285,6 +286,9 @@ public:
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dragAction->asyncCtx_->sourceType == SOURCE_TYPE_MOUSE) {
|
||||||
|
SetMouseDragMonitorState(true);
|
||||||
|
}
|
||||||
dragAction->StartDragInternal(dragAction->asyncCtx_);
|
dragAction->StartDragInternal(dragAction->asyncCtx_);
|
||||||
napi_escape_handle(env, scope, promiseResult, &promiseResult);
|
napi_escape_handle(env, scope, promiseResult, &promiseResult);
|
||||||
napi_close_escapable_handle_scope(env, scope);
|
napi_close_escapable_handle_scope(env, scope);
|
||||||
@ -541,6 +545,17 @@ void GetCallBackDataForJs(DragControllerAsyncCtx* asyncCtx, const DragNotifyMsg&
|
|||||||
napi_close_handle_scope(asyncCtx->env, scope);
|
napi_close_handle_scope(asyncCtx->env, scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetMouseDragMonitorState(bool state)
|
||||||
|
{
|
||||||
|
auto ret = InteractionInterface::GetInstance()->SetMouseDragMonitorState(state);
|
||||||
|
if (ret != 0) {
|
||||||
|
TAG_LOGW(AceLogTag::ACE_DRAG, "Set mouse drag monitor state %{public}d failed, return value is %{public}d",
|
||||||
|
state, ret);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TAG_LOGI(AceLogTag::ACE_DRAG, "Set mouse drag monitor state %{public}d success", state);
|
||||||
|
}
|
||||||
|
|
||||||
void HandleSuccess(DragControllerAsyncCtx* asyncCtx, const DragNotifyMsg& dragNotifyMsg,
|
void HandleSuccess(DragControllerAsyncCtx* asyncCtx, const DragNotifyMsg& dragNotifyMsg,
|
||||||
const DragStatus dragStatus)
|
const DragStatus dragStatus)
|
||||||
{
|
{
|
||||||
@ -783,6 +798,9 @@ void OnMultipleComplete(DragControllerAsyncCtx* asyncCtx)
|
|||||||
napi_handle_scope scope = nullptr;
|
napi_handle_scope scope = nullptr;
|
||||||
napi_open_handle_scope(asyncCtx->env, &scope);
|
napi_open_handle_scope(asyncCtx->env, &scope);
|
||||||
HandleFail(asyncCtx, ERROR_CODE_INTERNAL_ERROR, "drag state is reject.");
|
HandleFail(asyncCtx, ERROR_CODE_INTERNAL_ERROR, "drag state is reject.");
|
||||||
|
if (asyncCtx->sourceType == SOURCE_TYPE_MOUSE) {
|
||||||
|
SetMouseDragMonitorState(false);
|
||||||
|
}
|
||||||
napi_close_handle_scope(asyncCtx->env, scope);
|
napi_close_handle_scope(asyncCtx->env, scope);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1540,6 +1558,9 @@ static napi_value JSExecuteDrag(napi_env env, napi_callback_info info)
|
|||||||
napi_close_escapable_handle_scope(env, scope);
|
napi_close_escapable_handle_scope(env, scope);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
if (dragAsyncContext->sourceType == SOURCE_TYPE_MOUSE) {
|
||||||
|
SetMouseDragMonitorState(true);
|
||||||
|
}
|
||||||
ParameterType parameterType = getParameterType(dragAsyncContext);
|
ParameterType parameterType = getParameterType(dragAsyncContext);
|
||||||
if (parameterType == ParameterType::DRAGITEMINFO) {
|
if (parameterType == ParameterType::DRAGITEMINFO) {
|
||||||
OnComplete(dragAsyncContext);
|
OnComplete(dragAsyncContext);
|
||||||
|
Loading…
Reference in New Issue
Block a user