Warning, /graphics/krita/3rdparty/ext_qt/0028-Android-Pass-the-button-state-through-JNI.patch is written in an unsupported language. File is not indexed.
0001 From 9e8f4b981cbb65224e1c1a8e4a7339aad1ec5a05 Mon Sep 17 00:00:00 2001 0002 From: Sharaf Zaman <sharafzaz121@gmail.com> 0003 Date: Tue, 10 Nov 2020 17:11:02 +0000 0004 Subject: [PATCH 28/46] Android: Pass the button state through JNI 0005 0006 Mapping between MotionEvent#BUTTON_* and Qt's Qt::MouseButtons is 0007 similar so explicity mapping seems unnecessary. 0008 --- 0009 .../jar/src/org/qtproject/qt5/android/QtNative.java | 4 ++-- 0010 src/plugins/platforms/android/androidjniinput.cpp | 12 ++++++++---- 0011 2 files changed, 10 insertions(+), 6 deletions(-) 0012 0013 diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 0014 index 4e5ff3bde6..287502a645 100644 0015 --- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 0016 +++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 0017 @@ -731,7 +731,7 @@ public class QtNative 0018 break; 0019 0020 case MotionEvent.ACTION_DOWN: 0021 - mouseDown(id, (int) event.getX(), (int) event.getY(), event.getMetaState()); 0022 + mouseDown(id, (int) event.getX(), (int) event.getY(), event.getMetaState(), event.getButtonState()); 0023 m_oldx = (int) event.getX(); 0024 m_oldy = (int) event.getY(); 0025 break; 0026 @@ -1235,7 +1235,7 @@ public class QtNative 0027 // screen methods 0028 0029 // pointer methods 0030 - public static native void mouseDown(int winId, int x, int y, int modifier); 0031 + public static native void mouseDown(int winId, int x, int y, int modifier, int actionButton); 0032 public static native void mouseUp(int winId, int x, int y, int modifiers); 0033 public static native void mouseMove(int winId, int x, int y, int modifier); 0034 public static native void mouseWheel(int winId, int x, int y, float hdelta, float vdelta); 0035 diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp 0036 index b59be80a1b..83553deacd 100644 0037 --- a/src/plugins/platforms/android/androidjniinput.cpp 0038 +++ b/src/plugins/platforms/android/androidjniinput.cpp 0039 @@ -67,6 +67,7 @@ namespace QtAndroidInput 0040 static QList<QWindowSystemInterface::TouchPoint> m_touchPoints; 0041 0042 static QPointer<QWindow> m_mouseGrabber; 0043 + static int m_mouseActionButton; 0044 0045 void updateSelection(int selStart, int selEnd, int candidatesStart, int candidatesEnd) 0046 { 0047 @@ -133,7 +134,8 @@ namespace QtAndroidInput 0048 anchor.x(), anchor.y(), rtl); 0049 } 0050 0051 - static void mouseDown(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y, jint modifier) 0052 + static void mouseDown(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, 0053 + jint x, jint y, jint modifier, jint actionButton) 0054 { 0055 if (m_ignoreMouseEvents) 0056 return; 0057 @@ -146,10 +148,12 @@ namespace QtAndroidInput 0058 localPos = platformWindow ? platformWindow->mapFromGlobal(globalPos) : globalPos; 0059 } 0060 m_mouseGrabber = tlw; 0061 + // NOTE: mapping between MotionEvent's BUTTON states and Qt seem consistent 0062 + m_mouseActionButton = actionButton; 0063 QWindowSystemInterface::handleMouseEvent(tlw, 0064 localPos, 0065 globalPos, 0066 - Qt::MouseButtons(Qt::LeftButton), 0067 + Qt::MouseButton(m_mouseActionButton), 0068 mapAndroidModifiers(modifier)); 0069 } 0070 0071 @@ -189,7 +193,7 @@ namespace QtAndroidInput 0072 QWindowSystemInterface::handleMouseEvent(tlw, 0073 localPos, 0074 globalPos, 0075 - Qt::MouseButtons(m_mouseGrabber ? Qt::LeftButton : Qt::NoButton), 0076 + Qt::MouseButtons(m_mouseGrabber ? m_mouseActionButton : Qt::NoButton), 0077 mapAndroidModifiers(modifier)); 0078 } 0079 0080 @@ -883,7 +887,7 @@ namespace QtAndroidInput 0081 {"touchBegin","(I)V",(void*)touchBegin}, 0082 {"touchAdd","(IIIZIIFFFF)V",(void*)touchAdd}, 0083 {"touchEnd","(II)V",(void*)touchEnd}, 0084 - {"mouseDown", "(IIII)V", (void *)mouseDown}, 0085 + {"mouseDown", "(IIIII)V", (void *)mouseDown}, 0086 {"mouseUp", "(IIII)V", (void *)mouseUp}, 0087 {"mouseMove", "(IIII)V", (void *)mouseMove}, 0088 {"mouseWheel", "(IIIFF)V", (void *)mouseWheel}, 0089 -- 0090 2.33.0 0091