Warning, /graphics/krita/3rdparty/ext_qt/0025-Android-Move-events-handling-to-QtLayout.patch is written in an unsupported language. File is not indexed.

0001 From 8ac206954f3f45c156e0d380507705c07fb65bc0 Mon Sep 17 00:00:00 2001
0002 From: Sharaf Zaman <sharafzaz121@gmail.com>
0003 Date: Mon, 19 Oct 2020 10:09:57 +0000
0004 Subject: [PATCH 25/46] Android: Move events handling to QtLayout
0005 
0006 Whenever a widget with Qt::Window flag is used a new
0007 QtSurface is created and this is used by Android to
0008 send us events. However, as soon as this Surface is
0009 destroyed, the events stop coming until the user
0010 starts the new event by touching the new Surface.
0011 This causes interruptions and leaves events in an
0012 undefined state in apps where events are supposed to
0013 come in continuous manner.
0014 
0015 By moving it to ViewGroup, we stop relying on Surfaces.
0016 
0017 [ChangeLog][Android] Move events handling to QtLayout
0018 ---
0019  .../org/qtproject/qt5/android/QtLayout.java   | 43 +++++++++++++++++++
0020  .../org/qtproject/qt5/android/QtSurface.java  | 31 -------------
0021  2 files changed, 43 insertions(+), 31 deletions(-)
0022 
0023 diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
0024 index f22b8176c8..6b067a9cfd 100644
0025 --- a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
0026 +++ b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
0027 @@ -46,24 +46,42 @@ import android.util.AttributeSet;
0028  import android.util.DisplayMetrics;
0029  import android.view.View;
0030  import android.view.ViewGroup;
0031 +import android.view.MotionEvent;
0032 +import android.view.GestureDetector;
0033  
0034  public class QtLayout extends ViewGroup
0035  {
0036 +    private GestureDetector m_gestureDetector;
0037      private Runnable m_startApplicationRunnable;
0038 +
0039      public QtLayout(Context context, Runnable startRunnable)
0040      {
0041          super(context);
0042          m_startApplicationRunnable = startRunnable;
0043 +        initializeGestureDetector(context);
0044      }
0045  
0046      public QtLayout(Context context, AttributeSet attrs)
0047      {
0048          super(context, attrs);
0049 +        initializeGestureDetector(context);
0050      }
0051  
0052      public QtLayout(Context context, AttributeSet attrs, int defStyle)
0053      {
0054          super(context, attrs, defStyle);
0055 +        initializeGestureDetector(context);
0056 +    }
0057 +
0058 +    private void initializeGestureDetector(Context context)
0059 +    {
0060 +        m_gestureDetector =
0061 +            new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
0062 +                public void onLongPress(MotionEvent event) {
0063 +                    QtNative.longPress(getId(), (int) event.getX(), (int) event.getY());
0064 +                }
0065 +            });
0066 +        m_gestureDetector.setIsLongpressEnabled(true);
0067      }
0068  
0069      @Override
0070 @@ -252,4 +270,29 @@ public class QtLayout extends ViewGroup
0071              addView(childView, params);
0072          }
0073      }
0074 +
0075 +    @Override
0076 +    public boolean onInterceptTouchEvent(MotionEvent ev) {
0077 +        return true;
0078 +    }
0079 +
0080 +    @Override
0081 +    public boolean onTouchEvent(MotionEvent event) {
0082 +        QtNative.sendTouchEvent(event, getId());
0083 +        m_gestureDetector.onTouchEvent(event);
0084 +        return true;
0085 +    }
0086 +
0087 +    @Override
0088 +    public boolean onTrackballEvent(MotionEvent event)
0089 +    {
0090 +        QtNative.sendTrackballEvent(event, getId());
0091 +        return true;
0092 +    }
0093 +
0094 +    @Override
0095 +    public boolean onGenericMotionEvent(MotionEvent event)
0096 +    {
0097 +        return QtNative.sendGenericMotionEvent(event, getId());
0098 +    }
0099  }
0100 diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
0101 index 08b5a80f7e..723a783c6b 100644
0102 --- a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
0103 +++ b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
0104 @@ -43,8 +43,6 @@ package org.qtproject.qt5.android;
0105  import android.app.Activity;
0106  import android.content.Context;
0107  import android.graphics.PixelFormat;
0108 -import android.view.GestureDetector;
0109 -import android.view.MotionEvent;
0110  import android.view.SurfaceHolder;
0111  import android.view.SurfaceView;
0112  
0113 @@ -53,7 +51,6 @@ import java.lang.reflect.Method;
0114  
0115  public class QtSurface extends SurfaceView implements SurfaceHolder.Callback
0116  {
0117 -    private GestureDetector m_gestureDetector;
0118      private Object m_accessibilityDelegate = null;
0119  
0120      public QtSurface(Context context, int id, boolean onTop, int imageDepth)
0121 @@ -69,13 +66,6 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback
0122              getHolder().setFormat(PixelFormat.RGBA_8888);
0123  
0124          setId(id);
0125 -        m_gestureDetector =
0126 -            new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
0127 -                public void onLongPress(MotionEvent event) {
0128 -                    QtNative.longPress(getId(), (int) event.getX(), (int) event.getY());
0129 -                }
0130 -            });
0131 -        m_gestureDetector.setIsLongpressEnabled(true);
0132      }
0133  
0134      @Override
0135 @@ -97,25 +87,4 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback
0136      {
0137          QtNative.setSurface(getId(), null, 0, 0);
0138      }
0139 -
0140 -    @Override
0141 -    public boolean onTouchEvent(MotionEvent event)
0142 -    {
0143 -        QtNative.sendTouchEvent(event, getId());
0144 -        m_gestureDetector.onTouchEvent(event);
0145 -        return true;
0146 -    }
0147 -
0148 -    @Override
0149 -    public boolean onTrackballEvent(MotionEvent event)
0150 -    {
0151 -        QtNative.sendTrackballEvent(event, getId());
0152 -        return true;
0153 -    }
0154 -
0155 -    @Override
0156 -    public boolean onGenericMotionEvent(MotionEvent event)
0157 -    {
0158 -        return QtNative.sendGenericMotionEvent(event, getId());
0159 -    }
0160  }
0161 -- 
0162 2.33.0
0163