diff options
Diffstat (limited to 'src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h')
-rw-r--r-- | src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h index 816da8d377..91f15ea159 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h +++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h @@ -35,11 +35,43 @@ #include <qpa/qplatforminputcontext.h> +#include <QtCore/qpointer.h> +#include <QtDBus/qdbuspendingreply.h> +#include <QLoggingCategory> + QT_BEGIN_NAMESPACE +Q_DECLARE_LOGGING_CATEGORY(qtQpaInputMethods) + class QIBusPlatformInputContextPrivate; class QDBusVariant; +class QIBusFilterEventWatcher: public QDBusPendingCallWatcher +{ +public: + explicit QIBusFilterEventWatcher(const QDBusPendingCall &call, + QObject *parent = 0, + QObject *input = 0, + const Qt::KeyboardModifiers modifiers = 0, + const QVariantList arguments = QVariantList()) + : QDBusPendingCallWatcher(call, parent) + , m_input(input) + , m_modifiers(modifiers) + , m_arguments(arguments) + {} + ~QIBusFilterEventWatcher() + {} + + inline QObject *input() const { return m_input; } + inline const Qt::KeyboardModifiers modifiers() const { return m_modifiers; } + inline const QVariantList arguments() const { return m_arguments; } + +private: + QPointer<QObject> m_input; + const Qt::KeyboardModifiers m_modifiers; + const QVariantList m_arguments; +}; + class QIBusPlatformInputContext : public QPlatformInputContext { Q_OBJECT @@ -54,8 +86,7 @@ public: void reset() Q_DECL_OVERRIDE; void commit() Q_DECL_OVERRIDE; void update(Qt::InputMethodQueries) Q_DECL_OVERRIDE; - - Q_INVOKABLE bool x11FilterEvent(uint keyval, uint keycode, uint state, bool press); + bool filterEvent(const QEvent *event) Q_DECL_OVERRIDE; public Q_SLOTS: void commitText(const QDBusVariant &text); @@ -63,9 +94,11 @@ public Q_SLOTS: void cursorRectChanged(); void deleteSurroundingText(int offset, uint n_chars); void surroundingTextRequired(); + void filterEventFinished(QDBusPendingCallWatcher *call); private: QIBusPlatformInputContextPrivate *d; + bool m_eventFilterUseSynchronousMode; }; QT_END_NAMESPACE |