summaryrefslogtreecommitdiffstats
path: root/src/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/android')
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/CursorHandle.java12
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java16
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java18
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtSurface.java7
4 files changed, 42 insertions, 11 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/CursorHandle.java b/src/android/jar/src/org/qtproject/qt5/android/CursorHandle.java
index 7d26b8fa04..e6814c202d 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/CursorHandle.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/CursorHandle.java
@@ -107,13 +107,14 @@ public class CursorHandle implements ViewTreeObserver.OnPreDrawListener
private int m_id;
private int m_attr;
private Activity m_activity;
- private int m_posX;
- private int m_posY;
+ private int m_posX = 0;
+ private int m_posY = 0;
private int m_lastX;
private int m_lastY;
int tolerance;
+ private boolean m_rtl;
- public CursorHandle(Activity activity, View layout, int id, int attr) {
+ public CursorHandle(Activity activity, View layout, int id, int attr, boolean rtl) {
m_activity = activity;
m_id = id;
m_attr = attr;
@@ -122,6 +123,7 @@ public class CursorHandle implements ViewTreeObserver.OnPreDrawListener
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
tolerance = Math.round(2 * metrics.density);
m_lastX = m_lastY = -1 - tolerance;
+ m_rtl = rtl;
}
private boolean initOverlay(){
@@ -160,9 +162,9 @@ public class CursorHandle implements ViewTreeObserver.OnPreDrawListener
if (m_id == QtNative.IdCursorHandle) {
x2 -= m_cursorView.getWidth() / 2 ;
- } else if (m_id == QtNative.IdLeftHandle) {
+ } else if ((m_id == QtNative.IdLeftHandle && !m_rtl) || (m_id == QtNative.IdRightHandle && m_rtl)) {
x2 -= m_cursorView.getWidth() * 3 / 4;
- } else if (m_id == QtNative.IdRightHandle) {
+ } else {
x2 -= m_cursorView.getWidth() / 4;
}
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
index 5975d838ce..720a35902b 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
@@ -493,7 +493,7 @@ public class QtActivityDelegate
be adjusted.
mode is one of QAndroidInputContext::CursorHandleShowMode
*/
- public void updateHandles(int mode, int x1, int y1, int x2, int y2)
+ public void updateHandles(int mode, int x1, int y1, int x2, int y2, boolean rtl)
{
if (mode == CursorHandleNotShown) {
if (m_cursorHandle != null)
@@ -501,6 +501,8 @@ public class QtActivityDelegate
if (m_rightSelectionHandle != null) {
m_rightSelectionHandle.hide();
m_leftSelectionHandle.hide();
+ m_rightSelectionHandle = null;
+ m_leftSelectionHandle = null;
}
if (m_editMenu != null)
m_editMenu.hide();
@@ -509,19 +511,25 @@ public class QtActivityDelegate
} else if (mode == CursorHandleShowNormal || mode == CursorHandleShowPopup) {
if (m_cursorHandle == null) {
m_cursorHandle = new CursorHandle(m_activity, m_layout, QtNative.IdCursorHandle,
- android.R.attr.textSelectHandle);
+ android.R.attr.textSelectHandle, false);
}
m_cursorHandle.setPosition(x1, y1);
if (m_rightSelectionHandle != null) {
m_rightSelectionHandle.hide();
m_leftSelectionHandle.hide();
+ m_rightSelectionHandle = null;
+ m_leftSelectionHandle = null;
}
} else if (mode == CursorHandleShowSelection) {
if (m_rightSelectionHandle == null) {
m_leftSelectionHandle = new CursorHandle(m_activity, m_layout, QtNative.IdLeftHandle,
- android.R.attr.textSelectHandleLeft);
+ !rtl ? android.R.attr.textSelectHandleLeft :
+ android.R.attr.textSelectHandleRight,
+ rtl);
m_rightSelectionHandle = new CursorHandle(m_activity, m_layout, QtNative.IdRightHandle,
- android.R.attr.textSelectHandleRight);
+ !rtl ? android.R.attr.textSelectHandleRight :
+ android.R.attr.textSelectHandleLeft,
+ rtl);
}
m_leftSelectionHandle.setPosition(x1,y1);
m_rightSelectionHandle.setPosition(x2,y2);
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
index 1d3d329043..76dffbd213 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -61,6 +61,7 @@ import android.view.KeyEvent;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
+import android.view.InputDevice;
import java.lang.reflect.Method;
import java.security.KeyStore;
@@ -470,6 +471,17 @@ public class QtNative
}
}
+ static public void sendGenericMotionEvent(MotionEvent event, int id)
+ {
+ if (event.getActionMasked() != MotionEvent.ACTION_SCROLL
+ || (event.getSource() & InputDevice.SOURCE_CLASS_POINTER) != InputDevice.SOURCE_CLASS_POINTER) {
+ return;
+ }
+
+ mouseWheel(id, (int) event.getX(), (int) event.getY(),
+ event.getAxisValue(MotionEvent.AXIS_HSCROLL), event.getAxisValue(MotionEvent.AXIS_VSCROLL));
+ }
+
public static Context getContext() {
if (m_activity != null)
return m_activity;
@@ -516,12 +528,13 @@ public class QtNative
final int x1,
final int y1,
final int x2,
- final int y2)
+ final int y2,
+ final boolean rtl)
{
runAction(new Runnable() {
@Override
public void run() {
- m_activityDelegate.updateHandles(mode, x1, y1, x2, y2);
+ m_activityDelegate.updateHandles(mode, x1, y1, x2, y2, rtl);
}
});
}
@@ -800,6 +813,7 @@ public class QtNative
public static native void mouseDown(int winId, int x, int y);
public static native void mouseUp(int winId, int x, int y);
public static native void mouseMove(int winId, int x, int y);
+ public static native void mouseWheel(int winId, int x, int y, float hdelta, float vdelta);
public static native void touchBegin(int winId);
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);
public static native void touchEnd(int winId, int action);
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
index 4d8abb2117..e994002dd3 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
@@ -112,4 +112,11 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback
QtNative.sendTrackballEvent(event, getId());
return true;
}
+
+ @Override
+ public boolean onGenericMotionEvent(MotionEvent event)
+ {
+ QtNative.sendGenericMotionEvent(event, getId());
+ return true;
+ }
}