Parcourir la source

Merge pull request #760 from Xadiant/touch-events-imgui

Correct order of mouse/tap events to ImGui for correct touch event handling
Andre Weissflog il y a 2 ans
Parent
commit
2c8d849921
1 fichiers modifiés avec 4 ajouts et 4 suppressions
  1. 4 4
      util/sokol_imgui.h

+ 4 - 4
util/sokol_imgui.h

@@ -2344,13 +2344,13 @@ SOKOL_API_IMPL bool simgui_handle_event(const sapp_event* ev) {
             _simgui_add_focus_event(io, false);
             _simgui_add_focus_event(io, false);
             break;
             break;
         case SAPP_EVENTTYPE_MOUSE_DOWN:
         case SAPP_EVENTTYPE_MOUSE_DOWN:
-            _simgui_add_mouse_button_event(io, (int)ev->mouse_button, true);
             _simgui_add_mouse_pos_event(io, ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale);
             _simgui_add_mouse_pos_event(io, ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale);
+            _simgui_add_mouse_button_event(io, (int)ev->mouse_button, true);
             _simgui_update_modifiers(io, ev->modifiers);
             _simgui_update_modifiers(io, ev->modifiers);
             break;
             break;
         case SAPP_EVENTTYPE_MOUSE_UP:
         case SAPP_EVENTTYPE_MOUSE_UP:
-            _simgui_add_mouse_button_event(io, (int)ev->mouse_button, false);
             _simgui_add_mouse_pos_event(io, ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale);
             _simgui_add_mouse_pos_event(io, ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale);
+            _simgui_add_mouse_button_event(io, (int)ev->mouse_button, false);
             _simgui_update_modifiers(io, ev->modifiers);
             _simgui_update_modifiers(io, ev->modifiers);
             break;
             break;
         case SAPP_EVENTTYPE_MOUSE_MOVE:
         case SAPP_EVENTTYPE_MOUSE_MOVE:
@@ -2373,15 +2373,15 @@ SOKOL_API_IMPL bool simgui_handle_event(const sapp_event* ev) {
             _simgui_add_mouse_wheel_event(io, ev->scroll_x, ev->scroll_y);
             _simgui_add_mouse_wheel_event(io, ev->scroll_x, ev->scroll_y);
             break;
             break;
         case SAPP_EVENTTYPE_TOUCHES_BEGAN:
         case SAPP_EVENTTYPE_TOUCHES_BEGAN:
-            _simgui_add_mouse_button_event(io, 0, true);
             _simgui_add_mouse_pos_event(io, ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale);
             _simgui_add_mouse_pos_event(io, ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale);
+            _simgui_add_mouse_button_event(io, 0, true);
             break;
             break;
         case SAPP_EVENTTYPE_TOUCHES_MOVED:
         case SAPP_EVENTTYPE_TOUCHES_MOVED:
             _simgui_add_mouse_pos_event(io, ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale);
             _simgui_add_mouse_pos_event(io, ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale);
             break;
             break;
         case SAPP_EVENTTYPE_TOUCHES_ENDED:
         case SAPP_EVENTTYPE_TOUCHES_ENDED:
-            _simgui_add_mouse_button_event(io, 0, false);
             _simgui_add_mouse_pos_event(io, ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale);
             _simgui_add_mouse_pos_event(io, ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale);
+            _simgui_add_mouse_button_event(io, 0, false);
             break;
             break;
         case SAPP_EVENTTYPE_TOUCHES_CANCELLED:
         case SAPP_EVENTTYPE_TOUCHES_CANCELLED:
             _simgui_add_mouse_button_event(io, 0, false);
             _simgui_add_mouse_button_event(io, 0, false);