Emscripten: Switch from canvas[XY] to target[XY]
Allows mouse/touch events to work on non-default canvases
parent
60c48ed787
commit
4e5b5cba12
|
@ -330,8 +330,8 @@ Emscripten_HandleMouseMove(int eventType, const EmscriptenMouseEvent *mouseEvent
|
||||||
my = residualy;
|
my = residualy;
|
||||||
residualy -= my;
|
residualy -= my;
|
||||||
} else {
|
} else {
|
||||||
mx = mouseEvent->canvasX * xscale;
|
mx = mouseEvent->targetX * xscale;
|
||||||
my = mouseEvent->canvasY * yscale;
|
my = mouseEvent->targetY * yscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SendMouseMotion(window_data->window, 0, isPointerLocked, mx, my);
|
SDL_SendMouseMotion(window_data->window, 0, isPointerLocked, mx, my);
|
||||||
|
@ -375,8 +375,8 @@ Emscripten_HandleMouseButton(int eventType, const EmscriptenMouseEvent *mouseEve
|
||||||
|
|
||||||
/* Do not consume the event if the mouse is outside of the canvas. */
|
/* Do not consume the event if the mouse is outside of the canvas. */
|
||||||
emscripten_get_element_css_size(window_data->canvas_id, &css_w, &css_h);
|
emscripten_get_element_css_size(window_data->canvas_id, &css_w, &css_h);
|
||||||
if (mouseEvent->canvasX < 0 || mouseEvent->canvasX >= css_w ||
|
if (mouseEvent->targetX < 0 || mouseEvent->targetX >= css_w ||
|
||||||
mouseEvent->canvasY < 0 || mouseEvent->canvasY >= css_h) {
|
mouseEvent->targetY < 0 || mouseEvent->targetY >= css_h) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -388,7 +388,7 @@ Emscripten_HandleMouseFocus(int eventType, const EmscriptenMouseEvent *mouseEven
|
||||||
{
|
{
|
||||||
SDL_WindowData *window_data = userData;
|
SDL_WindowData *window_data = userData;
|
||||||
|
|
||||||
int mx = mouseEvent->canvasX, my = mouseEvent->canvasY;
|
int mx = mouseEvent->targetX, my = mouseEvent->targetY;
|
||||||
const int isPointerLocked = window_data->has_pointer_lock;
|
const int isPointerLocked = window_data->has_pointer_lock;
|
||||||
|
|
||||||
if (!isPointerLocked) {
|
if (!isPointerLocked) {
|
||||||
|
@ -450,8 +450,8 @@ Emscripten_HandleTouch(int eventType, const EmscriptenTouchEvent *touchEvent, vo
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
id = touchEvent->touches[i].identifier;
|
id = touchEvent->touches[i].identifier;
|
||||||
x = touchEvent->touches[i].canvasX / client_w;
|
x = touchEvent->touches[i].targetX / client_w;
|
||||||
y = touchEvent->touches[i].canvasY / client_h;
|
y = touchEvent->touches[i].targetY / client_h;
|
||||||
|
|
||||||
if (eventType == EMSCRIPTEN_EVENT_TOUCHSTART) {
|
if (eventType == EMSCRIPTEN_EVENT_TOUCHSTART) {
|
||||||
SDL_SendTouch(deviceId, id, SDL_TRUE, x, y, 1.0f);
|
SDL_SendTouch(deviceId, id, SDL_TRUE, x, y, 1.0f);
|
||||||
|
|
Loading…
Reference in New Issue