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