Warning, /graphics/krita/3rdparty/ext_qt/0004-Pass-keyboard-modifiers-for-mouse-and-tablet-events.patch is written in an unsupported language. File is not indexed.
0001 From 8c522fe596617726cb1ba30c799d7910f135109f Mon Sep 17 00:00:00 2001 0002 From: Sharaf Zaman <sharafzaz121@gmail.com> 0003 Date: Thu, 10 Sep 2020 10:42:31 +0000 0004 Subject: [PATCH 04/46] Pass keyboard modifiers for mouse and tablet events 0005 0006 [Android] Pass keyboard modifiers for tablet and mouse events 0007 0008 Change-Id: I79238d8454d8e10303af794625dcc704642f99e5 0009 --- 0010 .../org/qtproject/qt5/android/QtNative.java | 18 ++++++------ 0011 .../platforms/android/androidjniinput.cpp | 28 +++++++++++-------- 0012 2 files changed, 25 insertions(+), 21 deletions(-) 0013 0014 diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 0015 index 7b28fdb407..11e6a129be 100644 0016 --- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 0017 +++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 0018 @@ -496,7 +496,7 @@ public class QtNative 0019 float tiltY = (float) Math.toDegrees(Math.cos(orientation) * tiltRot); 0020 tabletEvent(id, event.getDeviceId(), event.getEventTime(), event.getAction(), pointerType, 0021 event.getButtonState(), event.getX(), event.getY(), event.getPressure(), tiltX, tiltY, 0022 - (float) Math.toDegrees(orientation)); 0023 + (float) Math.toDegrees(orientation), event.getMetaState()); 0024 } else { 0025 touchBegin(id); 0026 for (int i = 0; i < event.getPointerCount(); ++i) { 0027 @@ -546,23 +546,23 @@ public class QtNative 0028 { 0029 switch (event.getActionMasked()) { 0030 case MotionEvent.ACTION_UP: 0031 - mouseUp(id, (int) event.getX(), (int) event.getY()); 0032 + mouseUp(id, (int) event.getX(), (int) event.getY(), event.getMetaState()); 0033 break; 0034 0035 case MotionEvent.ACTION_DOWN: 0036 - mouseDown(id, (int) event.getX(), (int) event.getY()); 0037 + mouseDown(id, (int) event.getX(), (int) event.getY(), event.getMetaState()); 0038 m_oldx = (int) event.getX(); 0039 m_oldy = (int) event.getY(); 0040 break; 0041 case MotionEvent.ACTION_HOVER_MOVE: 0042 case MotionEvent.ACTION_MOVE: 0043 if (event.getToolType(0) == MotionEvent.TOOL_TYPE_MOUSE) { 0044 - mouseMove(id, (int) event.getX(), (int) event.getY()); 0045 + mouseMove(id, (int) event.getX(), (int) event.getY(), event.getMetaState()); 0046 } else { 0047 int dx = (int) (event.getX() - m_oldx); 0048 int dy = (int) (event.getY() - m_oldy); 0049 if (Math.abs(dx) > 5 || Math.abs(dy) > 5) { 0050 - mouseMove(id, (int) event.getX(), (int) event.getY()); 0051 + mouseMove(id, (int) event.getX(), (int) event.getY(), event.getMetaState()); 0052 m_oldx = (int) event.getX(); 0053 m_oldy = (int) event.getY(); 0054 } 0055 @@ -1038,9 +1038,9 @@ public class QtNative 0056 // screen methods 0057 0058 // pointer methods 0059 - public static native void mouseDown(int winId, int x, int y); 0060 - public static native void mouseUp(int winId, int x, int y); 0061 - public static native void mouseMove(int winId, int x, int y); 0062 + public static native void mouseDown(int winId, int x, int y, int modifier); 0063 + public static native void mouseUp(int winId, int x, int y, int modifiers); 0064 + public static native void mouseMove(int winId, int x, int y, int modifier); 0065 public static native void mouseWheel(int winId, int x, int y, float hdelta, float vdelta); 0066 public static native void touchBegin(int winId); 0067 public static native void touchAdd(int winId, int pointerId, int action, boolean primary, int x, int y, float major, float minor, float rotation, float pressure); 0068 @@ -1050,7 +1050,7 @@ public class QtNative 0069 0070 // tablet methods 0071 public static native boolean isTabletEventSupported(); 0072 - public static native void tabletEvent(int winId, int deviceId, long time, int action, int pointerType, int buttonState, float x, float y, float pressure, float tiltX, float tiltY, float rotation); 0073 + public static native void tabletEvent(int winId, int deviceId, long time, int action, int pointerType, int buttonState, float x, float y, float pressure, float tiltX, float tiltY, float rotation, int modifiers); 0074 // tablet methods 0075 0076 // keyboard methods 0077 diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp 0078 index 0e74468266..685f40d2ae 100644 0079 --- a/src/plugins/platforms/android/androidjniinput.cpp 0080 +++ b/src/plugins/platforms/android/androidjniinput.cpp 0081 @@ -59,6 +59,7 @@ using namespace QtAndroid; 0082 0083 namespace QtAndroidInput 0084 { 0085 + static Qt::KeyboardModifiers mapAndroidModifiers(jint modifiers); 0086 static bool m_ignoreMouseEvents = false; 0087 static bool m_softwareKeyboardVisible = false; 0088 static QRect m_softwareKeyboardRect; 0089 @@ -132,7 +133,7 @@ namespace QtAndroidInput 0090 anchor.x(), anchor.y(), rtl); 0091 } 0092 0093 - static void mouseDown(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) 0094 + static void mouseDown(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y, jint modifier) 0095 { 0096 if (m_ignoreMouseEvents) 0097 return; 0098 @@ -148,10 +149,11 @@ namespace QtAndroidInput 0099 QWindowSystemInterface::handleMouseEvent(tlw, 0100 localPos, 0101 globalPos, 0102 - Qt::MouseButtons(Qt::LeftButton)); 0103 + Qt::MouseButtons(Qt::LeftButton), 0104 + mapAndroidModifiers(modifier)); 0105 } 0106 0107 - static void mouseUp(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) 0108 + static void mouseUp(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y, jint modifiers) 0109 { 0110 QPoint globalPos(x,y); 0111 QWindow *tlw = m_mouseGrabber.data(); 0112 @@ -164,12 +166,12 @@ namespace QtAndroidInput 0113 localPos = platformWindow ? platformWindow->mapFromGlobal(globalPos) : globalPos; 0114 } 0115 QWindowSystemInterface::handleMouseEvent(tlw, localPos, globalPos 0116 - , Qt::MouseButtons(Qt::NoButton)); 0117 + , Qt::MouseButtons(Qt::NoButton), mapAndroidModifiers(modifiers)); 0118 m_ignoreMouseEvents = false; 0119 m_mouseGrabber = 0; 0120 } 0121 0122 - static void mouseMove(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) 0123 + static void mouseMove(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y, jint modifier) 0124 { 0125 if (m_ignoreMouseEvents) 0126 return; 0127 @@ -187,7 +189,8 @@ namespace QtAndroidInput 0128 QWindowSystemInterface::handleMouseEvent(tlw, 0129 localPos, 0130 globalPos, 0131 - Qt::MouseButtons(m_mouseGrabber ? Qt::LeftButton : Qt::NoButton)); 0132 + Qt::MouseButtons(m_mouseGrabber ? Qt::LeftButton : Qt::NoButton), 0133 + mapAndroidModifiers(modifier)); 0134 } 0135 0136 static void mouseWheel(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y, jfloat hdelta, jfloat vdelta) 0137 @@ -323,7 +326,8 @@ namespace QtAndroidInput 0138 } 0139 0140 static void tabletEvent(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint deviceId, jlong time, jint action, 0141 - jint pointerType, jint buttonState, jfloat x, jfloat y, jfloat pressure, jfloat tiltX, jfloat tiltY, jfloat rotation) 0142 + jint pointerType, jint buttonState, jfloat x, jfloat y, jfloat pressure, jfloat tiltX, jfloat tiltY, jfloat rotation, 0143 + jint modifiers) 0144 { 0145 #if QT_CONFIG(tabletevent) 0146 QPointF globalPosF(x, y); 0147 @@ -371,7 +375,7 @@ namespace QtAndroidInput 0148 0149 QWindowSystemInterface::handleTabletEvent(tlw, ulong(time), 0150 localPos, globalPosF, QTabletEvent::Stylus, pointerType, 0151 - buttons, pressure, tiltX, tiltY, 0., rotation, 0, deviceId, Qt::NoModifier); 0152 + buttons, pressure, tiltX, tiltY, 0., rotation, 0, deviceId, mapAndroidModifiers(modifiers)); 0153 #endif // QT_CONFIG(tabletevent) 0154 } 0155 0156 @@ -870,13 +874,13 @@ namespace QtAndroidInput 0157 {"touchBegin","(I)V",(void*)touchBegin}, 0158 {"touchAdd","(IIIZIIFFFF)V",(void*)touchAdd}, 0159 {"touchEnd","(II)V",(void*)touchEnd}, 0160 - {"mouseDown", "(III)V", (void *)mouseDown}, 0161 - {"mouseUp", "(III)V", (void *)mouseUp}, 0162 - {"mouseMove", "(III)V", (void *)mouseMove}, 0163 + {"mouseDown", "(IIII)V", (void *)mouseDown}, 0164 + {"mouseUp", "(IIII)V", (void *)mouseUp}, 0165 + {"mouseMove", "(IIII)V", (void *)mouseMove}, 0166 {"mouseWheel", "(IIIFF)V", (void *)mouseWheel}, 0167 {"longPress", "(III)V", (void *)longPress}, 0168 {"isTabletEventSupported", "()Z", (void *)isTabletEventSupported}, 0169 - {"tabletEvent", "(IIJIIIFFFFFF)V", (void *)tabletEvent}, 0170 + {"tabletEvent", "(IIJIIIFFFFFFI)V", (void *)tabletEvent}, 0171 {"keyDown", "(IIIZ)V", (void *)keyDown}, 0172 {"keyUp", "(IIIZ)V", (void *)keyUp}, 0173 {"keyboardVisibilityChanged", "(Z)V", (void *)keyboardVisibilityChanged}, 0174 -- 0175 2.33.0 0176