diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2011-09-05 12:53:33 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@nokia.com> | 2011-09-07 14:59:18 +0200 |
commit | a30d4162ddb30b62b8d003b099d3ca8ae0b0ed0b (patch) | |
tree | 69ad5c873027e5445710a7c339ed5353a01e8b96 /src/platformsupport | |
parent | a796eda7c4267f19f30db6c2c787d0f65b340013 (diff) |
Refactor the input framework
Results of the ongoing workshop in Oslo:
QInputPanel will be the application facing interface
for controlling the input context as well as querying
things like the position of the virtual keyboard.
QInputContext is significantly cleaned up and only there as
a compatibility API for existing code.
Change-Id: Ie8e2ee480930763f414bfaae63247b1fb6500c82
Reviewed-on: http://codereview.qt.nokia.com/4357
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Vesa Rantanen <vesa.rantanen@nokia.com>
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src/platformsupport')
-rw-r--r-- | src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp | 33 | ||||
-rw-r--r-- | src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h | 6 |
2 files changed, 24 insertions, 15 deletions
diff --git a/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp b/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp index 34838ff490..fba9116ca8 100644 --- a/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp +++ b/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp @@ -84,6 +84,8 @@ QIBusPlatformInputContext::QIBusPlatformInputContext () connect(d->context, SIGNAL(CommitText(QDBusVariant)), SLOT(commitText(QDBusVariant))); connect(d->context, SIGNAL(UpdatePreeditText(QDBusVariant,uint,bool)), this, SLOT(updatePreeditText(QDBusVariant,uint,bool))); } + QInputPanel *p = qApp->inputPanel(); + connect(p, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged())); } QIBusPlatformInputContext::~QIBusPlatformInputContext (void) @@ -96,9 +98,9 @@ bool QIBusPlatformInputContext::isValid() const return d->valid; } -void QIBusPlatformInputContext::mouseHandler (int x, QMouseEvent *event) +void QIBusPlatformInputContext::invokeAction(QInputPanel::Action a, int x) { - QPlatformInputContext::mouseHandler (x, event); + QPlatformInputContext::invokeAction(a, x); if (!d->valid) return; @@ -114,14 +116,14 @@ void QIBusPlatformInputContext::reset() d->context->Reset(); } -void QIBusPlatformInputContext::update() +void QIBusPlatformInputContext::update(Qt::InputMethodQueries q) { - QPlatformInputContext::update(); + QPlatformInputContext::update(q); if (!d->valid) return; - QObject *o = focusObject(); + QObject *o = qApp->inputPanel()->inputItem(); if (!o) return; @@ -135,16 +137,15 @@ void QIBusPlatformInputContext::update() } } -void QIBusPlatformInputContext::setFocusObject(QObject *object) +void QIBusPlatformInputContext::inputItemChanged() { - QPlatformInputContext::setFocusObject(object); - if (!d->valid) return; + QObject *input = qApp->inputPanel()->inputItem(); if (debug) - qDebug() << "setFocusObject" << object; - if (object) + qDebug() << "setFocusObject" << input; + if (input) d->context->FocusIn(); else d->context->FocusOut(); @@ -153,6 +154,10 @@ void QIBusPlatformInputContext::setFocusObject(QObject *object) void QIBusPlatformInputContext::commitText(const QDBusVariant &text) { + QObject *input = qApp->inputPanel()->inputItem(); + if (!input) + return; + const QDBusArgument arg = text.variant().value<QDBusArgument>(); QIBusText t; @@ -164,11 +169,15 @@ void QIBusPlatformInputContext::commitText(const QDBusVariant &text) QInputMethodEvent event; event.setCommitString(t.text); - QCoreApplication::sendEvent(focusObject(), &event); + QCoreApplication::sendEvent(input, &event); } void QIBusPlatformInputContext::updatePreeditText(const QDBusVariant &text, uint cursorPos, bool visible) { + QObject *input = qApp->inputPanel()->inputItem(); + if (!input) + return; + const QDBusArgument arg = text.variant().value<QDBusArgument>(); QIBusText t; @@ -180,7 +189,7 @@ void QIBusPlatformInputContext::updatePreeditText(const QDBusVariant &text, uint attributes += QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, cursorPos, visible ? 1 : 0, QVariant()); QInputMethodEvent event(t.text, attributes); - QCoreApplication::sendEvent(focusObject(), &event); + QCoreApplication::sendEvent(input, &event); } diff --git a/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h b/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h index 74f7da8d41..66c3aeecc6 100644 --- a/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h +++ b/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h @@ -55,16 +55,16 @@ public: bool isValid() const; - void mouseHandler(int x, QMouseEvent *event); + void invokeAction(QInputPanel::Action a, int x); void reset(void); - void update(void); - void setFocusObject(QObject *object); + void update(Qt::InputMethodQueries); bool x11FilterEvent(uint keyval, uint keycode, uint state, bool press); public Q_SLOTS: void commitText(const QDBusVariant &text); void updatePreeditText(const QDBusVariant &text, uint cursor_pos, bool visible); + void inputItemChanged(); private: QIBusPlatformInputContextPrivate *d; |