Fixes to the ibus input context
Adjust to changes in the QPlatformInputContext and implement commit(). Fix a bug that caused the cursor to be hidden after the first commit. Change-Id: I85e59a72766d1180a54df412cf33beb653af4e7b Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
This commit is contained in:
parent
c9ef22b185
commit
d7649245ec
@ -77,6 +77,7 @@ public:
|
||||
QIBusInputContextProxy *context;
|
||||
|
||||
bool valid;
|
||||
QString predit;
|
||||
};
|
||||
|
||||
|
||||
@ -104,10 +105,11 @@ bool QIBusPlatformInputContext::isValid() const
|
||||
|
||||
void QIBusPlatformInputContext::invokeAction(QInputPanel::Action a, int x)
|
||||
{
|
||||
QPlatformInputContext::invokeAction(a, x);
|
||||
|
||||
if (!d->valid)
|
||||
return;
|
||||
|
||||
if (a == QInputPanel::Click)
|
||||
commit();
|
||||
}
|
||||
|
||||
void QIBusPlatformInputContext::reset()
|
||||
@ -118,8 +120,31 @@ void QIBusPlatformInputContext::reset()
|
||||
return;
|
||||
|
||||
d->context->Reset();
|
||||
d->predit = QString();
|
||||
}
|
||||
|
||||
void QIBusPlatformInputContext::commit()
|
||||
{
|
||||
QPlatformInputContext::commit();
|
||||
|
||||
if (!d->valid)
|
||||
return;
|
||||
|
||||
QObject *input = qApp->inputPanel()->inputItem();
|
||||
if (!input) {
|
||||
d->predit = QString();
|
||||
return;
|
||||
}
|
||||
|
||||
QInputMethodEvent event;
|
||||
event.setCommitString(d->predit);
|
||||
QCoreApplication::sendEvent(input, &event);
|
||||
|
||||
d->context->Reset();
|
||||
d->predit = QString();
|
||||
}
|
||||
|
||||
|
||||
void QIBusPlatformInputContext::update(Qt::InputMethodQueries q)
|
||||
{
|
||||
QPlatformInputContext::update(q);
|
||||
@ -179,6 +204,8 @@ void QIBusPlatformInputContext::commitText(const QDBusVariant &text)
|
||||
QInputMethodEvent event;
|
||||
event.setCommitString(t.text);
|
||||
QCoreApplication::sendEvent(input, &event);
|
||||
|
||||
d->predit = QString();
|
||||
}
|
||||
|
||||
void QIBusPlatformInputContext::updatePreeditText(const QDBusVariant &text, uint cursorPos, bool visible)
|
||||
@ -195,10 +222,13 @@ void QIBusPlatformInputContext::updatePreeditText(const QDBusVariant &text, uint
|
||||
qDebug() << "preedit text:" << t.text;
|
||||
|
||||
QList<QInputMethodEvent::Attribute> attributes = t.attributes.imAttributes();
|
||||
attributes += QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, cursorPos, visible ? 1 : 0, QVariant());
|
||||
if (!t.text.isEmpty())
|
||||
attributes += QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, cursorPos, visible ? 1 : 0, QVariant());
|
||||
|
||||
QInputMethodEvent event(t.text, attributes);
|
||||
QCoreApplication::sendEvent(input, &event);
|
||||
|
||||
d->predit = t.text;
|
||||
}
|
||||
|
||||
|
||||
|
@ -58,7 +58,8 @@ public:
|
||||
bool isValid() const;
|
||||
|
||||
void invokeAction(QInputPanel::Action a, int x);
|
||||
void reset(void);
|
||||
void reset();
|
||||
void commit();
|
||||
void update(Qt::InputMethodQueries);
|
||||
|
||||
Q_INVOKABLE bool x11FilterEvent(uint keyval, uint keycode, uint state, bool press);
|
||||
|
Loading…
Reference in New Issue
Block a user