/* event filter addition for SDL2: as SDL2 does not have a function to enable
or disable keyboard auto-repeat, filter repeated keyboard events instead */
-int FilterEvents(const Event *event)
+static int FilterEventsExt(const Event *event)
{
MotionEvent *motion;
return 1;
}
+#if defined(TARGET_SDL2)
+int FilterEvents(void *userdata, Event *event)
+{
+ return FilterEventsExt(event);
+}
+#else
+int FilterEvents(const Event *event)
+{
+ return FilterEventsExt(event);
+}
+#endif
+
/* to prevent delay problems, skip mouse motion events if the very next
event is also a mouse motion event (and therefore effectively only
handling the last of a row of mouse motion events in the event queue) */
NextEvent(event);
- if (FilterMouseMotionEvents(event))
+ if (FilterEventsExt(event))
handle_this_event = TRUE;
if (SkipPressedMouseMotionEvent(event))
case EVENT_MOTIONNOTIFY:
HandleMotionEvent((MotionEvent *) &event);
break;
-
+
+#if defined(TARGET_SDL2)
+ case EVENT_FINGERPRESS:
+ case EVENT_FINGERRELEASE:
+ case EVENT_FINGERMOTION:
+ HandleFingerEvent((FingerEvent *) &event);
+ break;
+#endif
+
case EVENT_KEYPRESS:
case EVENT_KEYRELEASE:
HandleKeyEvent((KeyEvent *) &event);
HandleButton(event->x, event->y, button_status, button_status);
}
+#if defined(TARGET_SDL2)
+void HandleFingerEvent(FingerEvent *event)
+{
+ // #if DEBUG_EVENTS
+ Error(ERR_DEBUG, "FINGER EVENT: finger was %s, touch ID %lld, finger ID %lld, x/y %f/%f, dx/dy %f/%f, pressure %f",
+ (event->type == EVENT_FINGERPRESS ? "pressed" :
+ event->type == EVENT_FINGERRELEASE ? "released" : "moved"),
+ event->touchId,
+ event->fingerId,
+ event->x, event->y,
+ event->dx, event->dy,
+ event->pressure);
+ // #endif
+
+#if 1
+ CloseAllAndExit(0);
+#else
+ if (event->type == EVENT_FINGERPRESS)
+ button_status = event->button;
+ else
+ button_status = MB_RELEASED;
+
+ HandleButton(event->x, event->y, button_status, event->button);
+#endif
+}
+#endif
+
void HandleKeyEvent(KeyEvent *event)
{
int key_status = (event->type==EVENT_KEYPRESS ? KEY_PRESSED : KEY_RELEASED);