mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2025-01-26 12:59:18 +01:00
Bug 4576: handle mapping of TouchEvents to MouseEvents at higher level
This commit is contained in:
parent
1febfedf85
commit
a3f2c446ef
@ -31,6 +31,12 @@
|
|||||||
static int SDL_num_touch = 0;
|
static int SDL_num_touch = 0;
|
||||||
static SDL_Touch **SDL_touchDevices = NULL;
|
static SDL_Touch **SDL_touchDevices = NULL;
|
||||||
|
|
||||||
|
/* for mapping touch events to mice */
|
||||||
|
#define DUPLICATE_TO_MOUSE_EVENT
|
||||||
|
#if defined(DUPLICATE_TO_MOUSE_EVENT)
|
||||||
|
static SDL_bool finger_touching = SDL_FALSE;
|
||||||
|
static SDL_FingerID first_finger;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Public functions */
|
/* Public functions */
|
||||||
int
|
int
|
||||||
@ -241,6 +247,29 @@ SDL_SendTouch(SDL_TouchID id, SDL_FingerID fingerid,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(DUPLICATE_TO_MOUSE_EVENT)
|
||||||
|
{
|
||||||
|
SDL_Window *window = SDL_GetMouseFocus();
|
||||||
|
if (window) {
|
||||||
|
if (down) {
|
||||||
|
if (finger_touching == SDL_FALSE) {
|
||||||
|
int pos_x = x * window->w;
|
||||||
|
int pos_y = y * window->y;
|
||||||
|
finger_touching = SDL_TRUE;
|
||||||
|
first_finger = fingerid;
|
||||||
|
SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, pos_x, pos_y);
|
||||||
|
SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_PRESSED, SDL_BUTTON_LEFT);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (finger_touching == SDL_TRUE && first_finger == fingerid) {
|
||||||
|
SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT);
|
||||||
|
finger_touching = SDL_FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
finger = SDL_GetFinger(touch, fingerid);
|
finger = SDL_GetFinger(touch, fingerid);
|
||||||
if (down) {
|
if (down) {
|
||||||
if (finger) {
|
if (finger) {
|
||||||
@ -305,6 +334,19 @@ SDL_SendTouchMotion(SDL_TouchID id, SDL_FingerID fingerid,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(DUPLICATE_TO_MOUSE_EVENT)
|
||||||
|
{
|
||||||
|
SDL_Window *window = SDL_GetMouseFocus();
|
||||||
|
if (window) {
|
||||||
|
if (finger_touching == SDL_TRUE && first_finger == fingerid) {
|
||||||
|
int pos_x = x * window->w;
|
||||||
|
int pos_y = y * window->y;
|
||||||
|
SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, pos_x, pos_y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
finger = SDL_GetFinger(touch,fingerid);
|
finger = SDL_GetFinger(touch,fingerid);
|
||||||
if (!finger) {
|
if (!finger) {
|
||||||
return SDL_SendTouch(id, fingerid, SDL_TRUE, x, y, pressure);
|
return SDL_SendTouch(id, fingerid, SDL_TRUE, x, y, pressure);
|
||||||
|
Loading…
Reference in New Issue
Block a user