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