summaryrefslogtreecommitdiffstats
path: root/src/platformsupport
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2011-09-05 12:53:33 +0200
committerLars Knoll <lars.knoll@nokia.com>2011-09-07 14:59:18 +0200
commita30d4162ddb30b62b8d003b099d3ca8ae0b0ed0b (patch)
tree69ad5c873027e5445710a7c339ed5353a01e8b96 /src/platformsupport
parenta796eda7c4267f19f30db6c2c787d0f65b340013 (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.cpp33
-rw-r--r--src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h6
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;