From 2473ddeabb286b826924c49e62ea6c42a9acfd7a Mon Sep 17 00:00:00 2001 From: Kenechukwu Akubue Date: Fri, 16 May 2025 00:36:17 +0100 Subject: [PATCH] Patch SDLSurface to allow touch to be intercepted by python application --- .../build/src/patches/SDLSurface.java.patch | 25 ++++++++++++++++++ .../build/src/patches/SDLSurface.java.patch | 26 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 pythonforandroid/bootstraps/sdl2/build/src/patches/SDLSurface.java.patch create mode 100644 pythonforandroid/bootstraps/sdl3/build/src/patches/SDLSurface.java.patch diff --git a/pythonforandroid/bootstraps/sdl2/build/src/patches/SDLSurface.java.patch b/pythonforandroid/bootstraps/sdl2/build/src/patches/SDLSurface.java.patch new file mode 100644 index 0000000000..591e977176 --- /dev/null +++ b/pythonforandroid/bootstraps/sdl2/build/src/patches/SDLSurface.java.patch @@ -0,0 +1,25 @@ +--- a/src/main/java/org/libsdl/app/SDLSurface.java ++++ b/src/main/java/org/libsdl/app/SDLSurface.java +@@ -193,9 +193,22 @@ + return SDLActivity.handleKeyEvent(v, keyCode, event, null); + } + ++ public interface OnInterceptTouchListener { ++ boolean onTouch(MotionEvent ev); ++ } ++ ++ private OnInterceptTouchListener mOnInterceptTouchListener = null; ++ ++ public void setInterceptTouchListener(OnInterceptTouchListener listener) { ++ this.mOnInterceptTouchListener = listener; ++ } ++ + // Touch events + @Override + public boolean onTouch(View v, MotionEvent event) { ++ if (mOnInterceptTouchListener != null) ++ if (mOnInterceptTouchListener.onTouch(event)) ++ return false; + /* Ref: http://developer.android.com/training/gestures/multi.html */ + int touchDevId = event.getDeviceId(); + final int pointerCount = event.getPointerCount(); diff --git a/pythonforandroid/bootstraps/sdl3/build/src/patches/SDLSurface.java.patch b/pythonforandroid/bootstraps/sdl3/build/src/patches/SDLSurface.java.patch new file mode 100644 index 0000000000..4253ca7d33 --- /dev/null +++ b/pythonforandroid/bootstraps/sdl3/build/src/patches/SDLSurface.java.patch @@ -0,0 +1,26 @@ +--- a/src/main/java/org/libsdl/app/SDLSurface.java ++++ b/src/main/java/org/libsdl/app/SDLSurface.java +@@ -232,9 +232,23 @@ + } + } + ++ public interface OnInterceptTouchListener { ++ boolean onTouch(MotionEvent ev); ++ } ++ ++ private OnInterceptTouchListener mOnInterceptTouchListener = null; ++ ++ public void setInterceptTouchListener(OnInterceptTouchListener listener) { ++ this.mOnInterceptTouchListener = listener; ++ } ++ + // Touch events + @Override + public boolean onTouch(View v, MotionEvent event) { ++ // Allow touch to be intercepted by python application ++ if (mOnInterceptTouchListener != null) ++ if (mOnInterceptTouchListener.onTouch(event)) ++ return false; + /* Ref: http://developer.android.com/training/gestures/multi.html */ + int touchDevId = event.getDeviceId(); + final int pointerCount = event.getPointerCount();