Merge remote-tracking branch 'origin/main'

This commit is contained in:
Coder2 2026-03-17 20:35:48 +08:00
commit 7909739c8c
No known key found for this signature in database
GPG key ID: 98C112D1F699AA4C
2 changed files with 38 additions and 26 deletions

View file

@ -2,7 +2,7 @@ name: 'Setup Harmony toolchain'
inputs:
version:
description: 'Harmony version'
default: '5.0.0-Release'
default: '6.0-Release'
runs:
using: 'composite'
steps:

View file

@ -662,36 +662,48 @@ static void onNativeTouch(OH_NativeXComponent *component, void *window)
OH_NativeXComponent_GetTouchEvent(component, window, &touchEvent);
OH_NativeXComponent_GetTouchPointToolType(component, 0, &toolType);
// Only process the finger that triggered this event (touchEvent.id).
// The touchPoints array contains current state of all fingers, not just the changed one.
int targetIndex = -1;
for (int i = 0; i < touchEvent.numPoints; i++) {
SDL_OHOSTouchEvent e;
e.timestamp = touchEvent.timeStamp;
// skip assertions
e.deviceId = touchEvent.deviceId + 1;
e.fingerId = touchEvent.touchPoints[i].id + 1;
e.area = touchEvent.touchPoints[i].size;
e.x = touchEvent.touchPoints[i].x / (float)wid;
e.y = touchEvent.touchPoints[i].y / (float)hei;
e.p = touchEvent.touchPoints[i].force;
switch (touchEvent.touchPoints[i].type) {
case OH_NATIVEXCOMPONENT_DOWN:
e.type = SDL_EVENT_FINGER_DOWN;
break;
case OH_NATIVEXCOMPONENT_MOVE:
e.type = SDL_EVENT_FINGER_MOTION;
break;
case OH_NATIVEXCOMPONENT_UP:
e.type = SDL_EVENT_FINGER_UP;
break;
case OH_NATIVEXCOMPONENT_CANCEL:
case OH_NATIVEXCOMPONENT_UNKNOWN:
e.type = SDL_EVENT_FINGER_CANCELED;
if (touchEvent.touchPoints[i].id == touchEvent.id) {
targetIndex = i;
break;
}
OHOS_OnTouch(e);
}
if (targetIndex < 0) {
OHOS_UnlockPage();
return;
}
SDL_OHOSTouchEvent e;
e.timestamp = touchEvent.timeStamp;
e.deviceId = touchEvent.deviceId + 1;
e.fingerId = touchEvent.touchPoints[targetIndex].id + 1;
e.area = touchEvent.touchPoints[targetIndex].size;
e.x = touchEvent.touchPoints[targetIndex].x / (float)wid;
e.y = touchEvent.touchPoints[targetIndex].y / (float)hei;
e.p = touchEvent.touchPoints[targetIndex].force;
switch (touchEvent.touchPoints[targetIndex].type) {
case OH_NATIVEXCOMPONENT_DOWN:
e.type = SDL_EVENT_FINGER_DOWN;
break;
case OH_NATIVEXCOMPONENT_MOVE:
e.type = SDL_EVENT_FINGER_MOTION;
break;
case OH_NATIVEXCOMPONENT_UP:
e.type = SDL_EVENT_FINGER_UP;
break;
case OH_NATIVEXCOMPONENT_CANCEL:
case OH_NATIVEXCOMPONENT_UNKNOWN:
e.type = SDL_EVENT_FINGER_CANCELED;
break;
}
OHOS_OnTouch(e);
OHOS_UnlockPage();
}
// TODO mouse data