diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2016-08-04 16:40:07 +0200 |
---|---|---|
committer | Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> | 2016-08-21 20:17:45 +0000 |
commit | e0e9e196a72ffe5457034894eaaadc90ed0d34ef (patch) | |
tree | 4ad770f481762b41f3cd84d7fcc1510414af556a /src/plugins/platforms/android | |
parent | 89c235ca8295db1a946f3af5ba4a813e12a6c0be (diff) |
Android: Show the edit menu when things are selected
Change-Id: I3647fa39469c87bcc08bb439546e5e61c535c71d
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Diffstat (limited to 'src/plugins/platforms/android')
4 files changed, 25 insertions, 2 deletions
diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp index 62140c9816..5f05ab395e 100644 --- a/src/plugins/platforms/android/androidjniinput.cpp +++ b/src/plugins/platforms/android/androidjniinput.cpp @@ -175,6 +175,10 @@ namespace QtAndroidInput static void longPress(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) { + QAndroidInputContext *inputContext = QAndroidInputContext::androidInputContext(); + if (inputContext && qGuiApp) + QMetaObject::invokeMethod(inputContext, "longPress", Q_ARG(int, x), Q_ARG(int, y)); + //### TODO: add proper API for Qt 5.2 static bool rightMouseFromLongPress = qEnvironmentVariableIntValue("QT_NECESSITAS_COMPATIBILITY_LONG_PRESS"); if (!rightMouseFromLongPress) diff --git a/src/plugins/platforms/android/androidjniinput.h b/src/plugins/platforms/android/androidjniinput.h index f9d2f1a2a7..af18a96dc1 100644 --- a/src/plugins/platforms/android/androidjniinput.h +++ b/src/plugins/platforms/android/androidjniinput.h @@ -39,6 +39,7 @@ #ifndef ANDROIDJNIINPUT_H #define ANDROIDJNIINPUT_H + #include <jni.h> #include <QtCore/qglobal.h> #include <QtCore/QRect> diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp index c64e80479c..06a9c8c488 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.cpp +++ b/src/plugins/platforms/android/qandroidinputcontext.cpp @@ -550,7 +550,9 @@ void QAndroidInputContext::updateSelectionHandles() auto curRect = im->cursorRectangle(); QPoint cursorPoint(curRect.center().x(), curRect.bottom()); - QtAndroidInput::updateHandles(m_cursorHandleShown, cursorPoint * pixelDensity); + QPoint editMenuPoint(curRect.center().x(), curRect.top()); + QtAndroidInput::updateHandles(m_cursorHandleShown, cursorPoint * pixelDensity, + editMenuPoint * pixelDensity); return; } @@ -562,6 +564,11 @@ void QAndroidInputContext::updateSelectionHandles() QPoint leftPoint(leftRect.bottomLeft().toPoint() * pixelDensity); QPoint righPoint(rightRect.bottomRight().toPoint() * pixelDensity); QtAndroidInput::updateHandles(CursorHandleShowSelection, leftPoint, righPoint); + + if (m_cursorHandleShown == CursorHandleShowPopup) { + // make sure the popup does not reappear when the selection menu closes + m_cursorHandleShown = QAndroidInputContext::CursorHandleNotShown; + } } /* @@ -612,6 +619,15 @@ void QAndroidInputContext::touchDown(int x, int y) } } +void QAndroidInputContext::longPress(int x, int y) +{ + if (m_focusObject && inputItemRectangle().contains(x, y)) { + // Show the paste menu if there is something to paste. + m_cursorHandleShown = QAndroidInputContext::CursorHandleShowPopup; + updateSelectionHandles(); + } +} + void QAndroidInputContext::keyDown() { if (m_cursorHandleShown) { diff --git a/src/plugins/platforms/android/qandroidinputcontext.h b/src/plugins/platforms/android/qandroidinputcontext.h index c7b2b907b7..8a33ff71cc 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.h +++ b/src/plugins/platforms/android/qandroidinputcontext.h @@ -122,6 +122,7 @@ public slots: void updateSelectionHandles(); void handleLocationChanged(int handleId, int x, int y); void touchDown(int x, int y); + void longPress(int x, int y); void keyDown(); private slots: @@ -147,7 +148,8 @@ private: enum CursorHandleShowMode { CursorHandleNotShown, CursorHandleShowNormal = 1, - CursorHandleShowSelection = 2 + CursorHandleShowSelection = 2, + CursorHandleShowPopup = 3 }; CursorHandleShowMode m_cursorHandleShown; int m_batchEditNestingLevel; |