From bbc1f8b6872822a713bd5625ef98286f3d1610e2 Mon Sep 17 00:00:00 2001 From: a84329412 Date: Wed, 30 Apr 2025 15:14:44 -0400 Subject: [PATCH 1/5] Signed-off-by: a84329412 fix DTS2025043021626 --- .../include/libinput_adapter.h | 2 + .../libinput_adapter/src/libinput_adapter.cpp | 47 +++++++++---------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/service/libinput_adapter/include/libinput_adapter.h b/service/libinput_adapter/include/libinput_adapter.h index c3f94e07fa..6ceccda96b 100644 --- a/service/libinput_adapter/include/libinput_adapter.h +++ b/service/libinput_adapter/include/libinput_adapter.h @@ -173,6 +173,8 @@ private: const std::vector& msgItem); bool HandleVKeyTrackPadPinchEnd(libinput_event_touch* touch, const std::vector& msgItem); + void InjectEventForTwoFingerOnTouchpad(libinput_event_touch* touch, + libinput_event_type eventType, int64_t frameTime); void InjectEventForCastWindow(libinput_event_touch* touch); bool HandleVKeyTrackPadPanBegin(libinput_event_touch* touch, const std::vector& msgItem); diff --git a/service/libinput_adapter/src/libinput_adapter.cpp b/service/libinput_adapter/src/libinput_adapter.cpp index 58ac3802a2..2d481278f6 100644 --- a/service/libinput_adapter/src/libinput_adapter.cpp +++ b/service/libinput_adapter/src/libinput_adapter.cpp @@ -1134,18 +1134,7 @@ bool LibinputAdapter::HandleVKeyTrackPadPinchBegin(libinput_event_touch* touch, funInputEvent_((libinput_event*)lgEvent, frameTime); free(lgEvent); - event_touch tEvent; - tEvent.event_type = libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_DOWN; - tEvent.seat_slot = VKEY_PINCH_FIRST_FINGER_ID; - libinput_event_touch* ltEvent = libinput_create_touch_event(touch, tEvent); - funInputEvent_((libinput_event*)ltEvent, frameTime); - free(ltEvent); - - tEvent.event_type = libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_DOWN; - tEvent.seat_slot = VKEY_PINCH_SECOND_FINGER_ID; - ltEvent = libinput_create_touch_event(touch, tEvent); - funInputEvent_((libinput_event*)ltEvent, frameTime); - free(ltEvent); + InjectEventForTwoFingerOnTouchpad(touch, libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_DOWN, frameTime); return true; } @@ -1184,18 +1173,7 @@ bool LibinputAdapter::HandleVKeyTrackPadPinchUpdate(libinput_event_touch* touch, funInputEvent_((libinput_event*)lgEvent, frameTime); free(lgEvent); - event_touch tEvent; - tEvent.event_type = libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_MOTION; - tEvent.seat_slot = VKEY_PINCH_FIRST_FINGER_ID; - libinput_event_touch* ltEvent = libinput_create_touch_event(touch, tEvent); - funInputEvent_((libinput_event*)ltEvent, frameTime); - free(ltEvent); - - tEvent.event_type = libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_MOTION; - tEvent.seat_slot = VKEY_PINCH_SECOND_FINGER_ID; - ltEvent = libinput_create_touch_event(touch, tEvent); - funInputEvent_((libinput_event*)ltEvent, frameTime); - free(ltEvent); + InjectEventForTwoFingerOnTouchpad(touch, libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_MOTION, frameTime); return true; } @@ -1234,11 +1212,30 @@ bool LibinputAdapter::HandleVKeyTrackPadPinchEnd(libinput_event_touch* touch, funInputEvent_((libinput_event*)lgEvent, frameTime); free(lgEvent); - InjectEventForCastWindow(touch); + InjectEventForTwoFingerOnTouchpad(touch, libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_UP, frameTime); return true; } +void LibinputAdapter::InjectEventForTwoFingerOnTouchpad(libinput_event_touch* touch, libinput_event_type eventType, int64_t frameTime) +{ + event_touch tEvent; + tEvent.event_type = eventType; + tEvent.seat_slot = VKEY_PINCH_FIRST_FINGER_ID; + libinput_event_touch* ltEvent = libinput_create_touch_event(touch, tEvent); + if (ltEvent != nullptr) { + funInputEvent_((libinput_event*)ltEvent, frameTime); + free(ltEvent); + } + + tEvent.seat_slot = VKEY_PINCH_SECOND_FINGER_ID; + ltEvent = libinput_create_touch_event(touch, tEvent); + if (ltEvent != nullptr) { + funInputEvent_((libinput_event*)ltEvent, frameTime); + free(ltEvent); + } +} + void LibinputAdapter::InjectEventForCastWindow(libinput_event_touch* touch) { int64_t frameTime = GetSysClockTime(); -- Gitee From 4463088f1e15662185fc1bc05557f6f94337b523 Mon Sep 17 00:00:00 2001 From: a84329412 Date: Wed, 30 Apr 2025 15:26:20 -0400 Subject: [PATCH 2/5] Signed-off-by: a84329412 fix previous submission --- service/libinput_adapter/src/libinput_adapter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/service/libinput_adapter/src/libinput_adapter.cpp b/service/libinput_adapter/src/libinput_adapter.cpp index 2d481278f6..4357a2f561 100644 --- a/service/libinput_adapter/src/libinput_adapter.cpp +++ b/service/libinput_adapter/src/libinput_adapter.cpp @@ -1217,7 +1217,8 @@ bool LibinputAdapter::HandleVKeyTrackPadPinchEnd(libinput_event_touch* touch, return true; } -void LibinputAdapter::InjectEventForTwoFingerOnTouchpad(libinput_event_touch* touch, libinput_event_type eventType, int64_t frameTime) +void LibinputAdapter::InjectEventForTwoFingerOnTouchpad(libinput_event_touch* touch, + libinput_event_type eventType, int64_t frameTime) { event_touch tEvent; tEvent.event_type = eventType; -- Gitee From 5da105aa006a79a306ce6021ab54159263666d52 Mon Sep 17 00:00:00 2001 From: a84329412 Date: Fri, 2 May 2025 15:30:37 -0400 Subject: [PATCH 3/5] Signed-off-by: a84329412 improve previous submission --- .../include/libinput_adapter.h | 1 + .../libinput_adapter/src/libinput_adapter.cpp | 42 +++++++++++++------ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/service/libinput_adapter/include/libinput_adapter.h b/service/libinput_adapter/include/libinput_adapter.h index 6ceccda96b..82561c0ca1 100644 --- a/service/libinput_adapter/include/libinput_adapter.h +++ b/service/libinput_adapter/include/libinput_adapter.h @@ -176,6 +176,7 @@ private: void InjectEventForTwoFingerOnTouchpad(libinput_event_touch* touch, libinput_event_type eventType, int64_t frameTime); void InjectEventForCastWindow(libinput_event_touch* touch); + bool IsCursorInCastWindow(); bool HandleVKeyTrackPadPanBegin(libinput_event_touch* touch, const std::vector& msgItem); bool HandleVKeyTrackPadPanUpdate(libinput_event_touch* touch, diff --git a/service/libinput_adapter/src/libinput_adapter.cpp b/service/libinput_adapter/src/libinput_adapter.cpp index 4357a2f561..ecd18a4253 100644 --- a/service/libinput_adapter/src/libinput_adapter.cpp +++ b/service/libinput_adapter/src/libinput_adapter.cpp @@ -1212,8 +1212,12 @@ bool LibinputAdapter::HandleVKeyTrackPadPinchEnd(libinput_event_touch* touch, funInputEvent_((libinput_event*)lgEvent, frameTime); free(lgEvent); - InjectEventForTwoFingerOnTouchpad(touch, libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_UP, frameTime); - + if (IsCursorInCastWindow()){ + InjectEventForCastWindow(touch); + } else { + InjectEventForTwoFingerOnTouchpad(touch, libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_UP, frameTime); + } + return true; } @@ -1240,22 +1244,12 @@ void LibinputAdapter::InjectEventForTwoFingerOnTouchpad(libinput_event_touch* to void LibinputAdapter::InjectEventForCastWindow(libinput_event_touch* touch) { int64_t frameTime = GetSysClockTime(); + InjectEventForTwoFingerOnTouchpad(touch, libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_UP, frameTime); event_touch tEvent; - tEvent.event_type = libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_UP; tEvent.seat_slot = VKEY_PINCH_FIRST_FINGER_ID; - libinput_event_touch* ltEvent = libinput_create_touch_event(touch, tEvent); - funInputEvent_((libinput_event*)ltEvent, frameTime); - free(ltEvent); - - tEvent.event_type = libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_UP; - tEvent.seat_slot = VKEY_PINCH_SECOND_FINGER_ID; - ltEvent = libinput_create_touch_event(touch, tEvent); - funInputEvent_((libinput_event*)ltEvent, frameTime); - free(ltEvent); auto mouseInfo = WIN_MGR->GetMouseInfo(); - tEvent.event_type = libinput_event_type::LIBINPUT_EVENT_TOUCH_DOWN; tEvent.x = mouseInfo.physicalX * VKEY_RAW_COORDINATE_RATIO; tEvent.y = mouseInfo.physicalY * VKEY_RAW_COORDINATE_RATIO; @@ -1279,6 +1273,28 @@ void LibinputAdapter::InjectEventForCastWindow(libinput_event_touch* touch) free(lpEvent); } +bool LibinputAdapter::IsCursorInCastWindow() +{ + InputWindowsManager* inputWindowsManager = static_cast(WIN_MGR.get()); + if (inputWindowsManager != nullptr) { + DisplayGroupInfo displayGroupInfo = inputWindowsManager->GetDisplayGroupInfo(); + bool isFloating = false; + for (auto &windowInfo : displayGroupInfo.windowsInfo) { + if (windowInfo.windowType == CAST_WINDOW_TYPE) { + auto mouseInfo = WIN_MGR->GetMouseInfo(); + int32_t x = mouseInfo.physicalX; + int32_t y = mouseInfo.physicalY; + if ((x > windowInfo.area.x && x < (windowInfo.area.x + windowInfo.area.width)) && + (y > windowInfo.area.y && y < (windowInfo.area.y + windowInfo.area.height))) { + return true; + } + } + } + } + + return false; +} + bool LibinputAdapter::HandleVKeyTrackPadPanBegin(libinput_event_touch* touch, const std::vector& msgItem) { -- Gitee From ec834b4c1a98691c17b3ca5238c659801334386f Mon Sep 17 00:00:00 2001 From: a84329412 Date: Fri, 2 May 2025 15:42:41 -0400 Subject: [PATCH 4/5] Signed-off-by: a84329412 fix codecheck --- .../include/libinput_adapter.h | 2 +- .../libinput_adapter/src/libinput_adapter.cpp | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/service/libinput_adapter/include/libinput_adapter.h b/service/libinput_adapter/include/libinput_adapter.h index 82561c0ca1..3c22639a86 100644 --- a/service/libinput_adapter/include/libinput_adapter.h +++ b/service/libinput_adapter/include/libinput_adapter.h @@ -176,7 +176,7 @@ private: void InjectEventForTwoFingerOnTouchpad(libinput_event_touch* touch, libinput_event_type eventType, int64_t frameTime); void InjectEventForCastWindow(libinput_event_touch* touch); - bool IsCursorInCastWindow(); + bool IsCursorInCastWindow(); bool HandleVKeyTrackPadPanBegin(libinput_event_touch* touch, const std::vector& msgItem); bool HandleVKeyTrackPadPanUpdate(libinput_event_touch* touch, diff --git a/service/libinput_adapter/src/libinput_adapter.cpp b/service/libinput_adapter/src/libinput_adapter.cpp index ecd18a4253..e20d070f4f 100644 --- a/service/libinput_adapter/src/libinput_adapter.cpp +++ b/service/libinput_adapter/src/libinput_adapter.cpp @@ -1212,7 +1212,7 @@ bool LibinputAdapter::HandleVKeyTrackPadPinchEnd(libinput_event_touch* touch, funInputEvent_((libinput_event*)lgEvent, frameTime); free(lgEvent); - if (IsCursorInCastWindow()){ + if (IsCursorInCastWindow()) { InjectEventForCastWindow(touch); } else { InjectEventForTwoFingerOnTouchpad(touch, libinput_event_type::LIBINPUT_EVENT_TOUCHPAD_UP, frameTime); @@ -1276,18 +1276,18 @@ void LibinputAdapter::InjectEventForCastWindow(libinput_event_touch* touch) bool LibinputAdapter::IsCursorInCastWindow() { InputWindowsManager* inputWindowsManager = static_cast(WIN_MGR.get()); - if (inputWindowsManager != nullptr) { - DisplayGroupInfo displayGroupInfo = inputWindowsManager->GetDisplayGroupInfo(); - bool isFloating = false; - for (auto &windowInfo : displayGroupInfo.windowsInfo) { - if (windowInfo.windowType == CAST_WINDOW_TYPE) { - auto mouseInfo = WIN_MGR->GetMouseInfo(); - int32_t x = mouseInfo.physicalX; - int32_t y = mouseInfo.physicalY; - if ((x > windowInfo.area.x && x < (windowInfo.area.x + windowInfo.area.width)) && - (y > windowInfo.area.y && y < (windowInfo.area.y + windowInfo.area.height))) { - return true; - } + if (inputWindowsManager == nullptr) { + return false; + } + DisplayGroupInfo displayGroupInfo = inputWindowsManager->GetDisplayGroupInfo(); + for (auto &windowInfo : displayGroupInfo.windowsInfo) { + if (windowInfo.windowType == CAST_WINDOW_TYPE) { + auto mouseInfo = WIN_MGR->GetMouseInfo(); + int32_t x = mouseInfo.physicalX; + int32_t y = mouseInfo.physicalY; + if ((x > windowInfo.area.x && x < (windowInfo.area.x + windowInfo.area.width)) && + (y > windowInfo.area.y && y < (windowInfo.area.y + windowInfo.area.height))) { + return true; } } } -- Gitee From 19b22a60fb985f73629703d84f09f76f94b7432f Mon Sep 17 00:00:00 2001 From: a84329412 Date: Fri, 2 May 2025 15:51:29 -0400 Subject: [PATCH 5/5] Signed-off-by: a84329412 fix codecheck --- service/libinput_adapter/src/libinput_adapter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/service/libinput_adapter/src/libinput_adapter.cpp b/service/libinput_adapter/src/libinput_adapter.cpp index e20d070f4f..65d42e3ca1 100644 --- a/service/libinput_adapter/src/libinput_adapter.cpp +++ b/service/libinput_adapter/src/libinput_adapter.cpp @@ -1277,8 +1277,8 @@ bool LibinputAdapter::IsCursorInCastWindow() { InputWindowsManager* inputWindowsManager = static_cast(WIN_MGR.get()); if (inputWindowsManager == nullptr) { - return false; - } + return false; + } DisplayGroupInfo displayGroupInfo = inputWindowsManager->GetDisplayGroupInfo(); for (auto &windowInfo : displayGroupInfo.windowsInfo) { if (windowInfo.windowType == CAST_WINDOW_TYPE) { -- Gitee