diff --git a/frameworks/core/components_ng/gestures/recognizers/click_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/click_recognizer.cpp index 6736b753a598f75753517f0a41dc343c539170e8..733773affc621e196ebeb707415611c3d669a4d1 100644 --- a/frameworks/core/components_ng/gestures/recognizers/click_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/click_recognizer.cpp @@ -175,6 +175,7 @@ ClickInfo ClickRecognizer::GetClickInfo() info.SetRollAngle(touchPoint.rollAngle.value()); } info.SetSourceTool(touchPoint.sourceTool); + info.SetTargetDisplayId(touchPoint.targetDisplayId); return info; } @@ -533,6 +534,7 @@ GestureEvent ClickRecognizer::GetGestureEventInfo() info.SetRollAngle(touchPoint.rollAngle.value()); } info.SetSourceTool(touchPoint.sourceTool); + info.SetTargetDisplayId(touchPoint.targetDisplayId); #ifdef SECURITY_COMPONENT_ENABLE info.SetDisplayX(touchPoint.screenX); info.SetDisplayY(touchPoint.screenY); @@ -648,6 +650,7 @@ GestureJudgeResult ClickRecognizer::TriggerGestureJudgeCallback() info->SetRawInputEventType(inputEventType_); info->SetRawInputEvent(lastPointEvent_); info->SetRawInputDeviceId(deviceId_); + info->SetTargetDisplayId(touchPoint.targetDisplayId); if (sysJudge_) { return sysJudge_(gestureInfo_, info); } diff --git a/frameworks/core/event/mouse_event.cpp b/frameworks/core/event/mouse_event.cpp index 64565de4e436b7f1d6794296ffe9308b0ce91e67..86813f45d316e54afc9f0703347b43346136a7a0 100644 --- a/frameworks/core/event/mouse_event.cpp +++ b/frameworks/core/event/mouse_event.cpp @@ -47,6 +47,7 @@ bool HoverEventTarget::HandleHoverEvent(bool isHovered, const MouseEvent& event) hoverInfo.SetTarget(GetEventTarget().value_or(EventTarget())); hoverInfo.SetPressedKeyCodes(event.pressedKeyCodes_); hoverInfo.SetMouseAction(event.action); + hoverInfo.SetTargetDisplayId(event.targetDisplayId); // onHoverEventCallback_ may be overwritten in its invoke so we copy it first auto onHoverEventCallback = onHoverEventCallback_; onHoverEventCallback(isHovered, hoverInfo); @@ -82,6 +83,7 @@ bool HoverEventTarget::HandlePenHoverEvent(bool isHovered, const TouchEvent& eve hoverInfo.SetScreenLocation(Offset(event.screenX, event.screenY)); hoverInfo.SetGlobalDisplayLocation(Offset(event.globalDisplayX, event.globalDisplayY)); hoverInfo.SetTarget(GetEventTarget().value_or(EventTarget())); + hoverInfo.SetTargetDisplayId(event.targetDisplayId); // onPenHoverEventCallback_ may be overwritten in its invoke so we copy it first auto onPenHoverEventCallback = onPenHoverEventCallback_; onPenHoverEventCallback(isHovered, hoverInfo); @@ -117,6 +119,7 @@ bool HoverEventTarget::HandlePenHoverMoveEvent(const TouchEvent& event) hoverInfo.SetScreenLocation(Offset(event.screenX, event.screenY)); hoverInfo.SetGlobalDisplayLocation(Offset(event.globalDisplayX, event.globalDisplayY)); hoverInfo.SetTarget(GetEventTarget().value_or(EventTarget())); + hoverInfo.SetTargetDisplayId(event.targetDisplayId); // onPenHoverMoveEventCallback_ may be overwritten in its invoke so we copy it first auto onPenHoverMoveEventCallback = onPenHoverMoveEventCallback_; onPenHoverMoveEventCallback(hoverInfo); @@ -145,6 +148,7 @@ void HoverEventTarget::HandleAccessibilityHoverEvent(bool isHovered, const Touch hoverInfo.SetGlobalDisplayLocation(Offset(event.globalDisplayX, event.globalDisplayY)); hoverInfo.SetActionType(ConvertAccessibilityHoverAction(event.type)); hoverInfo.SetTarget(GetEventTarget().value_or(EventTarget())); + hoverInfo.SetTargetDisplayId(event.targetDisplayId); // onAccessibilityHoverCallback_ may be overwritten in its invoke so we copy it first auto onAccessibilityHoverCallback = onAccessibilityHoverCallback_; onAccessibilityHoverCallback(isHovered, hoverInfo); diff --git a/frameworks/core/interfaces/native/node/node_common_modifier.cpp b/frameworks/core/interfaces/native/node/node_common_modifier.cpp index 1223ef17d3737886ed193996a7b291d2dd24cda3..e55828460d260665f1441eb6d6aed3f9e6cfbadb 100644 --- a/frameworks/core/interfaces/native/node/node_common_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_common_modifier.cpp @@ -9778,6 +9778,8 @@ void SetOnClickInfo(ArkUINodeEvent& event, GestureEvent& info, bool usePx) event.clickEvent.toolType = static_cast(info.GetSourceTool()); // deviceid event.clickEvent.deviceId = info.GetDeviceId(); + // targetDisplayId + event.clickEvent.targetDisplayId = info.GetTargetDisplayId(); // modifierkeystates event.clickEvent.modifierKeyState = NodeModifier::CalculateModifierKeyState(info.GetPressedKeyCodes()); if (!info.GetFingerList().empty()) { @@ -10366,6 +10368,8 @@ void TriggerOnHoverEvent(void* extraParam, int32_t nodeId, bool isHover, HoverIn // globalDisplayX globalDisplayY event.hoverEvent.globalDisplayX = info.GetGlobalDisplayLocation().GetX(); event.hoverEvent.globalDisplayY = info.GetGlobalDisplayLocation().GetY(); + // targetDisplayId + event.hoverEvent.targetDisplayId = info.GetTargetDisplayId(); SendArkUISyncEvent(&event); info.SetStopPropagation(event.hoverEvent.stopPropagation); } diff --git a/interfaces/native/event/ui_input_event.cpp b/interfaces/native/event/ui_input_event.cpp index 083f09d1dedaa4a0dc3018f5cffaff12dfa0372b..5bb717c85a09b94fd65e70c241de36ed09dd9ff1 100644 --- a/interfaces/native/event/ui_input_event.cpp +++ b/interfaces/native/event/ui_input_event.cpp @@ -2695,6 +2695,14 @@ int32_t OH_ArkUI_UIInputEvent_GetTargetDisplayId(const ArkUI_UIInputEvent* event case C_TOUCH_EVENT_ID: RETURN_RET_WITH_STATUS_CHECK( getTargetDisplayId(reinterpret_cast(event->inputEvent)), ARKUI_ERROR_CODE_NO_ERROR); + case C_CLICK_EVENT_ID: { + RETURN_RET_WITH_STATUS_CHECK( + getTargetDisplayId(reinterpret_cast(event->inputEvent)), ARKUI_ERROR_CODE_NO_ERROR); + } + case C_HOVER_EVENT_ID: { + RETURN_RET_WITH_STATUS_CHECK( + getTargetDisplayId(reinterpret_cast(event->inputEvent)), ARKUI_ERROR_CODE_NO_ERROR); + } case C_AXIS_EVENT_ID: RETURN_RET_WITH_STATUS_CHECK( getTargetDisplayId(reinterpret_cast(event->inputEvent)), ARKUI_ERROR_CODE_NO_ERROR); diff --git a/test/unittest/interfaces/ui_input_event_test.cpp b/test/unittest/interfaces/ui_input_event_test.cpp index 5322957153e2a6a55e4506e4c3e3c6f970b4985e..41f49a6decbc7c44212f165578a0220c4635b485 100644 --- a/test/unittest/interfaces/ui_input_event_test.cpp +++ b/test/unittest/interfaces/ui_input_event_test.cpp @@ -2259,6 +2259,29 @@ HWTEST_F(UIInputEventTest, OH_ArkUI_UIInputEvent_GetTargetDisplayId, TestSize.Le EXPECT_EQ(result, 6); uiInputEvent->eventTypeId = C_HOVER_EVENT_ID; + auto ohosHoverEvent = std::make_unique(); + ohosHoverEvent->targetDisplayId = 7; + uiInputEvent->inputEvent = ohosHoverEvent.get(); + result = OH_ArkUI_UIInputEvent_GetTargetDisplayId(uiInputEvent.get()); + EXPECT_EQ(result, 7); +} + +/** + * @tc.name: OH_ArkUI_UIInputEvent_GetTargetDisplayId008 + * @tc.desc: test OH_ArkUI_UIInputEvent_GetTargetDisplayId + * @tc.type: FUNC + */ +HWTEST_F(UIInputEventTest, OH_ArkUI_UIInputEvent_GetTargetDisplayId008, TestSize.Level1) +{ + auto uiInputEvent = std::make_unique(); + uiInputEvent->eventTypeId = C_CLICK_EVENT_ID; + auto ohosClickEvent = std::make_unique(); + ohosClickEvent->targetDisplayId = 8; + uiInputEvent->inputEvent = ohosClickEvent.get(); + auto result = OH_ArkUI_UIInputEvent_GetTargetDisplayId(uiInputEvent.get()); + EXPECT_EQ(result, 8); + + uiInputEvent->eventTypeId = C_KEY_EVENT_ID; result = OH_ArkUI_UIInputEvent_GetTargetDisplayId(uiInputEvent.get()); EXPECT_EQ(result, 0); }