summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android/androidjniinput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/android/androidjniinput.cpp')
-rw-r--r--src/plugins/platforms/android/androidjniinput.cpp45
1 files changed, 24 insertions, 21 deletions
diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp
index 6e1e59d9d21..00e4b969f18 100644
--- a/src/plugins/platforms/android/androidjniinput.cpp
+++ b/src/plugins/platforms/android/androidjniinput.cpp
@@ -168,23 +168,23 @@ namespace QtAndroidInput
if (m_ignoreMouseEvents)
return;
- const QPoint globalPos(x,y);
+ const QPoint localPos(x,y);
QWindow *window = windowFromId(winId);
m_mouseGrabber = window;
- const QPoint localPos = window && window->handle() ?
- window->handle()->mapFromGlobal(globalPos) : globalPos;
+ const QPoint globalPos = window && window->handle() ?
+ window->handle()->mapToGlobal(localPos) : localPos;
sendMouseButtonEvents(window, localPos, globalPos, mouseButtonState, QEvent::MouseButtonPress);
}
static void mouseUp(JNIEnv */*env*/, jobject /*thiz*/, jint winId, jint x, jint y, jint mouseButtonState)
{
- const QPoint globalPos(x,y);
+ const QPoint localPos(x,y);
QWindow *window = m_mouseGrabber.data();
if (!window)
window = windowFromId(winId);
- const QPoint localPos = window && window->handle() ?
- window->handle()->mapFromGlobal(globalPos) : globalPos;
+ const QPoint globalPos = window && window->handle() ?
+ window->handle()->mapToGlobal(localPos) : localPos;
sendMouseButtonEvents(window, localPos, globalPos, mouseButtonState, QEvent::MouseButtonRelease);
m_ignoreMouseEvents = false;
@@ -196,12 +196,12 @@ namespace QtAndroidInput
if (m_ignoreMouseEvents)
return;
- const QPoint globalPos(x,y);
+ const QPoint localPos(x,y);
QWindow *window = m_mouseGrabber.data();
if (!window)
window = windowFromId(winId);
- const QPoint localPos = window && window->handle() ?
- window->handle()->mapFromGlobal(globalPos) : globalPos;
+ const QPoint globalPos = window && window->handle() ?
+ window->handle()->mapToGlobal(localPos) : localPos;
sendMouseButtonEvents(window, localPos, globalPos, mouseButtonState, QEvent::MouseMove);
}
@@ -210,12 +210,12 @@ namespace QtAndroidInput
if (m_ignoreMouseEvents)
return;
- const QPoint globalPos(x,y);
+ const QPoint localPos(x,y);
QWindow *window = m_mouseGrabber.data();
if (!window)
window = windowFromId(winId);
- const QPoint localPos = window && window->handle() ?
- window->handle()->mapFromGlobal(globalPos) : globalPos;
+ const QPoint globalPos = window && window->handle() ?
+ window->handle()->mapToGlobal(localPos) : localPos;
const QPoint angleDelta(hdelta * 120, vdelta * 120);
QWindowSystemInterface::handleWheelEvent(window,
@@ -228,18 +228,21 @@ namespace QtAndroidInput
static void longPress(JNIEnv */*env*/, jobject /*thiz*/, jint winId, jint x, jint y)
{
QAndroidInputContext *inputContext = QAndroidInputContext::androidInputContext();
+
+ const QPoint globalPos(x,y);
+ QWindow *window = windowFromId(winId);
+ const QPoint localPos = window && window->handle() ?
+ window->handle()->mapFromGlobal(globalPos) : globalPos;
+
if (inputContext && qGuiApp)
- QMetaObject::invokeMethod(inputContext, "longPress", Q_ARG(int, x), Q_ARG(int, y));
+ QMetaObject::invokeMethod(inputContext, "longPress", Q_ARG(int, globalPos.x()), Q_ARG(int, globalPos.y()));
//### TODO: add proper API for Qt 5.2
static bool rightMouseFromLongPress = qEnvironmentVariableIntValue("QT_ANDROID_ENABLE_RIGHT_MOUSE_FROM_LONG_PRESS");
if (!rightMouseFromLongPress)
return;
m_ignoreMouseEvents = true;
- const QPoint globalPos(x,y);
- QWindow *window = windowFromId(winId);
- const QPoint localPos = window && window->handle() ?
- window->handle()->mapFromGlobal(globalPos) : globalPos;
+
// Click right button if no other button is already pressed.
if (!m_mouseGrabber) {
@@ -312,7 +315,7 @@ namespace QtAndroidInput
if (state == QEventPoint::State::Pressed) {
QAndroidInputContext *inputContext = QAndroidInputContext::androidInputContext();
if (inputContext && qGuiApp)
- QMetaObject::invokeMethod(inputContext, "touchDown", Q_ARG(int, x), Q_ARG(int, y));
+ QMetaObject::invokeMethod(inputContext, "touchDown", Q_ARG(int, mappedTouchPoint.x()), Q_ARG(int, mappedTouchPoint.y()));
}
}
@@ -384,10 +387,10 @@ namespace QtAndroidInput
jint pointerType, jint buttonState, jfloat x, jfloat y, jfloat pressure)
{
#if QT_CONFIG(tabletevent)
- const QPointF globalPosF(x, y);
+ const QPointF localPos(x, y);
QWindow *window = windowFromId(winId);
- const QPointF localPos = window && window->handle() ?
- window->handle()->mapFromGlobalF(globalPosF) : globalPosF;
+ const QPointF globalPosF = window && window->handle() ?
+ window->handle()->mapFromGlobalF(localPos) : localPos;
// Galaxy Note with plain Android:
// 0 1 0 stylus press