diff options
Diffstat (limited to 'src/plugins/platforms/android/qandroidinputcontext.h')
-rw-r--r-- | src/plugins/platforms/android/qandroidinputcontext.h | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/src/plugins/platforms/android/qandroidinputcontext.h b/src/plugins/platforms/android/qandroidinputcontext.h index e7692bf720..bd3edb30f0 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.h +++ b/src/plugins/platforms/android/qandroidinputcontext.h @@ -42,8 +42,10 @@ #define ANDROIDINPUTCONTEXT_H #include <qpa/qplatforminputcontext.h> +#include <functional> #include <jni.h> #include <qevent.h> +#include <QTimer> QT_BEGIN_NAMESPACE @@ -58,6 +60,22 @@ class QAndroidInputContext: public QPlatformInputContext }; public: + enum EditContext : uint32_t { + CutButton = 1 << 0, + CopyButton = 1 << 1, + PasteButton = 1 << 2, + SelectAllButton = 1 << 3, + AllButtons = CutButton | CopyButton | PasteButton | SelectAllButton + }; + + enum HandleMode { + Hidden = 0, + ShowCursor = 1, + ShowSelection = 2, + ShowEditPopup = 0x100 + }; + Q_DECLARE_FLAGS(HandleModes, HandleMode) + struct ExtractedText { ExtractedText() { clear(); } @@ -118,25 +136,21 @@ public: jboolean paste(); public slots: + void safeCall(const std::function<void()> &func, Qt::ConnectionType conType = Qt::BlockingQueuedConnection); void updateCursorPosition(); void updateSelectionHandles(); void handleLocationChanged(int handleId, int x, int y); void touchDown(int x, int y); void longPress(int x, int y); void keyDown(); + void hideSelectionHandles(); private slots: void showInputPanelLater(Qt::ApplicationState); private: - void sendInputMethodEventThreadSafe(QInputMethodEvent *event); - Q_INVOKABLE void sendInputMethodEventUnsafe(QInputMethodEvent *event); - - QSharedPointer<QInputMethodQueryEvent> focusObjectInputMethodQueryThreadSafe(Qt::InputMethodQueries queries = Qt::ImQueryAll); - Q_INVOKABLE QInputMethodQueryEvent *focusObjectInputMethodQueryUnsafe(Qt::InputMethodQueries queries); - - Q_INVOKABLE QVariant queryFocusObjectUnsafe(Qt::InputMethodQuery query, QVariant argument); - QVariant queryFocusObjectThreadSafe(Qt::InputMethodQuery query, QVariant argument); + void sendInputMethodEvent(QInputMethodEvent *event); + QSharedPointer<QInputMethodQueryEvent> focusObjectInputMethodQuery(Qt::InputMethodQueries queries = Qt::ImQueryAll); private: ExtractedText m_extractedText; @@ -145,17 +159,12 @@ private: int m_composingCursor; QMetaObject::Connection m_updateCursorPosConnection; bool m_blockUpdateSelection; - enum CursorHandleShowMode { - CursorHandleNotShown, - CursorHandleShowNormal = 1, - CursorHandleShowSelection = 2, - CursorHandleShowPopup = 3 - }; - CursorHandleShowMode m_cursorHandleShown; + HandleModes m_handleMode; QAtomicInt m_batchEditNestingLevel; QObject *m_focusObject; + QTimer m_hideCursorHandleTimer; }; - +Q_DECLARE_OPERATORS_FOR_FLAGS(QAndroidInputContext::HandleModes) QT_END_NAMESPACE #endif // ANDROIDINPUTCONTEXT_H |