Pārlūkot izejas kodu

use css size for touch normalisation

Charlie Birks 8 gadi atpakaļ
vecāks
revīzija
be08cc61f9
1 mainītis faili ar 5 papildinājumiem un 2 dzēšanām
  1. 5 2
      src/video/emscripten/SDL_emscriptenevents.c

+ 5 - 2
src/video/emscripten/SDL_emscriptenevents.c

@@ -374,12 +374,15 @@ Emscripten_HandleTouch(int eventType, const EmscriptenTouchEvent *touchEvent, vo
 {
     SDL_WindowData *window_data = userData;
     int i;
+    double client_w, client_h;
 
     SDL_TouchID deviceId = 1;
     if (SDL_AddTouch(deviceId, "") < 0) {
          return 0;
     }
 
+    emscripten_get_element_css_size(NULL, &client_w, &client_h);
+
     for (i = 0; i < touchEvent->numTouches; i++) {
         SDL_FingerID id;
         float x, y;
@@ -388,8 +391,8 @@ Emscripten_HandleTouch(int eventType, const EmscriptenTouchEvent *touchEvent, vo
             continue;
 
         id = touchEvent->touches[i].identifier;
-        x = touchEvent->touches[i].canvasX / (float)window_data->windowed_width;
-        y = touchEvent->touches[i].canvasY / (float)window_data->windowed_height;
+        x = touchEvent->touches[i].canvasX / client_w;
+        y = touchEvent->touches[i].canvasY / client_h;
 
         if (eventType == EMSCRIPTEN_EVENT_TOUCHSTART) {
             if (!window_data->finger_touching) {