mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-11 18:41:14 +00:00
Handle SDL_EVENT_FINGER_CANCELED (#633)
This commit is contained in:
parent
6a45dbec34
commit
e86fd71560
@ -84,7 +84,8 @@ void Emscripten_ConvertEventToRenderCoordinates(SDL_Event* event)
|
|||||||
}
|
}
|
||||||
case SDL_EVENT_FINGER_MOTION:
|
case SDL_EVENT_FINGER_MOTION:
|
||||||
case SDL_EVENT_FINGER_DOWN:
|
case SDL_EVENT_FINGER_DOWN:
|
||||||
case SDL_EVENT_FINGER_UP: {
|
case SDL_EVENT_FINGER_UP:
|
||||||
|
case SDL_EVENT_FINGER_CANCELED: {
|
||||||
const float scale = std::min(g_fullWidth / g_targetWidth, g_fullHeight / g_targetHeight);
|
const float scale = std::min(g_fullWidth / g_targetWidth, g_fullHeight / g_targetHeight);
|
||||||
const float widthRatio = (g_targetWidth * scale) / g_fullWidth;
|
const float widthRatio = (g_targetWidth * scale) / g_fullWidth;
|
||||||
const float heightRatio = (g_targetHeight * scale) / g_fullHeight;
|
const float heightRatio = (g_targetHeight * scale) / g_fullHeight;
|
||||||
|
|||||||
@ -460,6 +460,7 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event)
|
|||||||
case SDL_EVENT_FINGER_MOTION:
|
case SDL_EVENT_FINGER_MOTION:
|
||||||
case SDL_EVENT_FINGER_DOWN:
|
case SDL_EVENT_FINGER_DOWN:
|
||||||
case SDL_EVENT_FINGER_UP:
|
case SDL_EVENT_FINGER_UP:
|
||||||
|
case SDL_EVENT_FINGER_CANCELED:
|
||||||
IDirect3DRMMiniwinDevice* device = GetD3DRMMiniwinDevice();
|
IDirect3DRMMiniwinDevice* device = GetD3DRMMiniwinDevice();
|
||||||
if (device && !device->ConvertEventToRenderCoordinates(event)) {
|
if (device && !device->ConvertEventToRenderCoordinates(event)) {
|
||||||
SDL_Log("Failed to convert event coordinates: %s", SDL_GetError());
|
SDL_Log("Failed to convert event coordinates: %s", SDL_GetError());
|
||||||
@ -754,7 +755,8 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SDL_EVENT_FINGER_UP: {
|
case SDL_EVENT_FINGER_UP:
|
||||||
|
case SDL_EVENT_FINGER_CANCELED: {
|
||||||
g_mousedown = FALSE;
|
g_mousedown = FALSE;
|
||||||
|
|
||||||
float x = SDL_clamp(event->tfinger.x, 0, 1) * g_targetWidth;
|
float x = SDL_clamp(event->tfinger.x, 0, 1) * g_targetWidth;
|
||||||
|
|||||||
@ -612,6 +612,7 @@ MxBool LegoInputManager::HandleTouchEvent(SDL_Event* p_event, TouchScheme p_touc
|
|||||||
case e_arrowKeys:
|
case e_arrowKeys:
|
||||||
switch (p_event->type) {
|
switch (p_event->type) {
|
||||||
case SDL_EVENT_FINGER_UP:
|
case SDL_EVENT_FINGER_UP:
|
||||||
|
case SDL_EVENT_FINGER_CANCELED:
|
||||||
m_touchFlags.erase(event.fingerID);
|
m_touchFlags.erase(event.fingerID);
|
||||||
break;
|
break;
|
||||||
case SDL_EVENT_FINGER_DOWN:
|
case SDL_EVENT_FINGER_DOWN:
|
||||||
@ -647,6 +648,7 @@ MxBool LegoInputManager::HandleTouchEvent(SDL_Event* p_event, TouchScheme p_touc
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SDL_EVENT_FINGER_UP:
|
case SDL_EVENT_FINGER_UP:
|
||||||
|
case SDL_EVENT_FINGER_CANCELED:
|
||||||
if (event.fingerID == g_finger) {
|
if (event.fingerID == g_finger) {
|
||||||
g_finger = 0;
|
g_finger = 0;
|
||||||
m_touchVirtualThumb = {0, 0};
|
m_touchVirtualThumb = {0, 0};
|
||||||
@ -795,6 +797,7 @@ void LegoInputManager::UpdateLastInputMethod(SDL_Event* p_event)
|
|||||||
case SDL_EVENT_FINGER_MOTION:
|
case SDL_EVENT_FINGER_MOTION:
|
||||||
case SDL_EVENT_FINGER_DOWN:
|
case SDL_EVENT_FINGER_DOWN:
|
||||||
case SDL_EVENT_FINGER_UP:
|
case SDL_EVENT_FINGER_UP:
|
||||||
|
case SDL_EVENT_FINGER_CANCELED:
|
||||||
m_lastInputMethod = SDL_TouchID_v{p_event->tfinger.touchID};
|
m_lastInputMethod = SDL_TouchID_v{p_event->tfinger.touchID};
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -185,7 +185,8 @@ bool Direct3DRMDevice2Impl::ConvertEventToRenderCoordinates(SDL_Event* event)
|
|||||||
}
|
}
|
||||||
case SDL_EVENT_FINGER_MOTION:
|
case SDL_EVENT_FINGER_MOTION:
|
||||||
case SDL_EVENT_FINGER_DOWN:
|
case SDL_EVENT_FINGER_DOWN:
|
||||||
case SDL_EVENT_FINGER_UP: {
|
case SDL_EVENT_FINGER_UP:
|
||||||
|
case SDL_EVENT_FINGER_CANCELED: {
|
||||||
float x = (event->tfinger.x * m_windowWidth - m_viewportTransform.offsetX) / m_viewportTransform.scale;
|
float x = (event->tfinger.x * m_windowWidth - m_viewportTransform.offsetX) / m_viewportTransform.scale;
|
||||||
float y = (event->tfinger.y * m_windowHeight - m_viewportTransform.offsetY) / m_viewportTransform.scale;
|
float y = (event->tfinger.y * m_windowHeight - m_viewportTransform.offsetY) / m_viewportTransform.scale;
|
||||||
event->tfinger.x = x / m_virtualWidth;
|
event->tfinger.x = x / m_virtualWidth;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user