diff --git a/service/window_manager/src/input_windows_manager.cpp b/service/window_manager/src/input_windows_manager.cpp index 40c4829712dd058dcf65938d1bebe9e2df400b98..cf6bc8092c2339467ed9a698f0fae991ec2782e5 100644 --- a/service/window_manager/src/input_windows_manager.cpp +++ b/service/window_manager/src/input_windows_manager.cpp @@ -4891,7 +4891,10 @@ int32_t InputWindowsManager::UpdateTouchScreenTarget(std::shared_ptrSetBuffer(extraData_.buffer); pointerEvent->SetPullId(extraData_.pullId); UpdatePointerAction(pointerEvent); - PullEnterLeaveEvent(logicalX, logicalY, pointerEvent, touchWindow); + if (pointerAction != PointerEvent::POINTER_ACTION_PULL_OUT_WINDOW && + pointerAction != PointerEvent::POINTER_ACTION_PULL_IN_WINDOW) { + PullEnterLeaveEvent(logicalX, logicalY, pointerEvent, touchWindow); + } } isHPR_ = PRODUCT_TYPE_HPR == DEVICE_TYPE_HPR; if (isHPR_ && pointerEvent->GetPointerAction() == PointerEvent::POINTER_ACTION_PULL_UP) { @@ -5140,6 +5143,7 @@ void InputWindowsManager::DispatchTouch(int32_t pointerAction, int32_t groupId) currentPointerItem.SetWindowYPos(static_cast(windowY)); currentPointerItem.SetDisplayX(lastPointerItem.GetDisplayX()); currentPointerItem.SetDisplayY(lastPointerItem.GetDisplayY()); + currentPointerItem.SetPressed(lastPointerItem.IsPressed()); currentPointerItem.SetPointerId(lastPointerId); pointerEvent->UpdateId(); @@ -5158,6 +5162,9 @@ void InputWindowsManager::DispatchTouch(int32_t pointerAction, int32_t groupId) pointerEvent->SetActionTime(time); pointerEvent->SetActionStartTime(time); pointerEvent->SetDeviceId(lastTouchEvent_->GetDeviceId()); + if (lastTouchEvent_->HasFlag(InputEvent::EVENT_FLAG_NO_INTERCEPT)) { + pointerEvent->AddFlag(InputEvent::EVENT_FLAG_NO_INTERCEPT); + } EventLogHelper::PrintEventData(pointerEvent, MMI_LOG_FREEZE); auto filter = InputHandler->GetFilterHandler();