summaryrefslogtreecommitdiffstats
path: root/src/widgets/inputmethod/qinputcontext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/inputmethod/qinputcontext.cpp')
-rw-r--r--src/widgets/inputmethod/qinputcontext.cpp53
1 files changed, 37 insertions, 16 deletions
diff --git a/src/widgets/inputmethod/qinputcontext.cpp b/src/widgets/inputmethod/qinputcontext.cpp
index e461df59af..a3e73eb288 100644
--- a/src/widgets/inputmethod/qinputcontext.cpp
+++ b/src/widgets/inputmethod/qinputcontext.cpp
@@ -56,13 +56,15 @@
//#define QT_NO_IM_PREEDIT_RELOCATION
#include "qinputcontext.h"
-#include "qinputcontext_p.h"
#ifndef QT_NO_IM
#include "qplatformdefs.h"
#include "qapplication.h"
+#include "private/qguiapplication_p.h"
+#include "qplatformintegration_qpa.h"
+#include "qplatforminputcontext_qpa.h"
#include "qmenu.h"
#include "qtextformat.h"
#include "qpalette.h"
@@ -143,7 +145,7 @@ QT_BEGIN_NAMESPACE
Constructs an input context with the given \a parent.
*/
QInputContext::QInputContext(QObject* parent)
- : QObject(*new QInputContextPrivate, parent)
+ : QObject(parent)
{
}
@@ -170,8 +172,10 @@ QInputContext::~QInputContext()
*/
QWidget *QInputContext::focusWidget() const
{
- Q_D(const QInputContext);
- return d->focusWidget;
+ QPlatformInputContext *ic = QGuiApplicationPrivate::platformIntegration()->inputContext();
+ if (ic)
+ return qobject_cast<QWidget *>(ic->focusObject());
+ return 0;
}
@@ -186,12 +190,14 @@ QWidget *QInputContext::focusWidget() const
void QInputContext::setFocusWidget(QWidget *widget)
{
Q_ASSERT(!widget || widget->testAttribute(Qt::WA_InputMethodEnabled));
- Q_D(QInputContext);
- d->focusWidget = widget;
+ QPlatformInputContext *ic = QGuiApplicationPrivate::platformIntegration()->inputContext();
+ if (ic)
+ ic->setFocusObject(widget);
}
/*!
\fn bool QInputContext::isComposing() const
+ \obsolete
This function indicates whether InputMethodStart event had been
sent to the current focus widget. It is ensured that an input
@@ -298,12 +304,11 @@ void QInputContext::sendEvent(const QInputMethodEvent &event)
QEvent::MouseMove. The event's button and state indicate
the kind of operation that was performed.
*/
-void QInputContext::mouseHandler(int /*x*/, QMouseEvent *event)
+void QInputContext::mouseHandler(int x, QMouseEvent *event)
{
- // Default behavior for simple ephemeral input contexts. Some
- // complex input contexts should not be reset here.
- if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonDblClick)
- reset();
+ QPlatformInputContext *ic = QGuiApplicationPrivate::platformIntegration()->inputContext();
+ if (ic)
+ ic->mouseHandler(x, event);
}
@@ -312,11 +317,11 @@ void QInputContext::mouseHandler(int /*x*/, QMouseEvent *event)
*/
QFont QInputContext::font() const
{
- Q_D(const QInputContext);
- if (!d->focusWidget)
+ QWidget *focus = focusWidget();
+ if (!focus)
return QApplication::font();
- return qvariant_cast<QFont>(d->focusWidget->inputMethodQuery(Qt::ImFont));
+ return qvariant_cast<QFont>(focus->inputMethodQuery(Qt::ImFont));
}
/*!
@@ -326,6 +331,9 @@ QFont QInputContext::font() const
*/
void QInputContext::update()
{
+ QPlatformInputContext *ic = QGuiApplicationPrivate::platformIntegration()->inputContext();
+ if (ic)
+ ic->update();
}
/*!
@@ -335,8 +343,7 @@ void QInputContext::update()
*/
void QInputContext::widgetDestroyed(QWidget *widget)
{
- Q_D(QInputContext);
- if (widget == d->focusWidget)
+ if (widget == focusWidget())
setFocusWidget(0);
}
@@ -360,6 +367,12 @@ void QInputContext::widgetDestroyed(QWidget *widget)
string and attributes; otherwise, you risk breaking input state
consistency.
*/
+void QInputContext::reset()
+{
+ QPlatformInputContext *ic = QGuiApplicationPrivate::platformIntegration()->inputContext();
+ if (ic)
+ ic->reset();
+}
/*!
@@ -380,6 +393,10 @@ void QInputContext::widgetDestroyed(QWidget *widget)
\sa QInputContextPlugin::keys(), QInputContextPlugin::displayName()
*/
+QString QInputContext::identifierName()
+{
+ return QLatin1String("qpa");
+}
/*!
@@ -398,6 +415,10 @@ void QInputContext::widgetDestroyed(QWidget *widget)
(that automatically modifies fonts in CJK-mixed text) and XML editor
(that automatically inserts lang attr).
*/
+QString QInputContext::language()
+{
+ return QString();
+}
/*!