summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/windows/qwindowsinputcontext.cpp34
-rw-r--r--src/plugins/platforms/windows/qwindowsinputcontext.h3
2 files changed, 14 insertions, 23 deletions
diff --git a/src/plugins/platforms/windows/qwindowsinputcontext.cpp b/src/plugins/platforms/windows/qwindowsinputcontext.cpp
index 6c915acfd3..34ae93ee7c 100644
--- a/src/plugins/platforms/windows/qwindowsinputcontext.cpp
+++ b/src/plugins/platforms/windows/qwindowsinputcontext.cpp
@@ -93,7 +93,7 @@ template <class T>
QInputMethodQueryEvent queryEvent(query);
if (!QCoreApplication::sendEvent(fo, &queryEvent))
return false;
- *result = qvariant_cast<T>(queryEvent.value());
+ *result = qvariant_cast<T>(queryEvent.value(query));
return true;
}
@@ -179,7 +179,7 @@ void QWindowsInputContext::reset()
QPlatformInputContext::reset();
if (!m_compositionContext.hwnd)
return;
- QObject *fo = focusObject();
+ QObject *fo = qApp->inputPanel()->inputItem();
if (QWindowsContext::verboseInputMethods)
qDebug() << __FUNCTION__<< fo;
if (!fo)
@@ -199,12 +199,12 @@ void QWindowsInputContext::reset()
\brief Moves the candidate window along with microfocus of the focus object.
*/
-void QWindowsInputContext::update()
+void QWindowsInputContext::update(Qt::InputMethodQueries queries)
{
- QPlatformInputContext::update();
+ QPlatformInputContext::update(queries);
if (!m_compositionContext.hwnd)
return;
- QObject *fo = focusObject();
+ QObject *fo = qApp->inputPanel()->inputItem();
if (!fo)
return;
const HIMC himc = ImmGetContext(m_compositionContext.hwnd);
@@ -265,14 +265,6 @@ void QWindowsInputContext::mouseHandler(int pos, QMouseEvent *event)
ImmReleaseContext(m_compositionContext.hwnd, himc);
}
-void QWindowsInputContext::setFocusObject(QObject *object)
-{
- if (QWindowsContext::verboseInputMethods)
- qDebug() << __FUNCTION__ << object;
-
- QPlatformInputContext::setFocusObject(object);
-}
-
QWindowsInputContext *QWindowsInputContext::instance()
{
return static_cast<QWindowsInputContext *>(QWindowsIntegration::instance()->inputContext());
@@ -333,11 +325,11 @@ static inline QTextFormat standardFormat(StandardFormat format)
bool QWindowsInputContext::startComposition(HWND hwnd)
{
- const QObject *fo = focusObject();
+ const QObject *fo = qApp->inputPanel()->inputItem();
if (!fo)
return false;
// This should always match the object.
- QWindow *window = QGuiApplication::activeWindow();
+ QWindow *window = qApp->inputPanel()->inputWindow();
if (!window)
return false;
if (QWindowsContext::verboseInputMethods)
@@ -358,7 +350,7 @@ void QWindowsInputContext::startContextComposition()
m_compositionContext.isComposing = true;
m_compositionContext.composition.clear();
m_compositionContext.position = 0;
- update();
+ update(Qt::ImQueryAll);
}
void QWindowsInputContext::endContextComposition()
@@ -401,7 +393,7 @@ static inline QList<QInputMethodEvent::Attribute>
bool QWindowsInputContext::composition(HWND hwnd, LPARAM lParamIn)
{
- QObject *fo = focusObject();
+ QObject *fo = qApp->inputPanel()->inputItem();
const int lParam = int(lParamIn);
if (QWindowsContext::verboseInputMethods)
qDebug() << '>' << __FUNCTION__ << fo << debugComposition(lParam)
@@ -449,7 +441,7 @@ bool QWindowsInputContext::composition(HWND hwnd, LPARAM lParamIn)
<< event->attributes().size()
<< " commit=" << event->commitString()
<< " to " << fo << " returns " << result;
- update();
+ update(Qt::ImQueryAll);
ImmReleaseContext(m_compositionContext.hwnd, himc);
return result;
}
@@ -463,7 +455,7 @@ bool QWindowsInputContext::endComposition(HWND hwnd)
// against that.
if (m_endCompositionRecursionGuard || m_compositionContext.hwnd != hwnd)
return false;
- QObject *fo = focusObject();
+ QObject *fo = qApp->inputPanel()->inputItem();
if (!fo)
return false;
@@ -490,7 +482,7 @@ void QWindowsInputContext::initContext(HWND hwnd)
// Chinese input methods.
m_compositionContext.haveCaret = CreateCaret(hwnd, 0, 1, 1);
HideCaret(hwnd);
- update();
+ update(Qt::ImQueryAll);
m_compositionContext.isComposing = false;
m_compositionContext.position = 0;
}
@@ -541,7 +533,7 @@ bool QWindowsInputContext::handleIME_Request(WPARAM wParam,
int QWindowsInputContext::reconvertString(RECONVERTSTRING *reconv)
{
- QObject *fo = focusObject();
+ QObject *fo = qApp->inputPanel()->inputItem();
if (!fo)
return false;
diff --git a/src/plugins/platforms/windows/qwindowsinputcontext.h b/src/plugins/platforms/windows/qwindowsinputcontext.h
index 5198b5129e..2c683ee4e7 100644
--- a/src/plugins/platforms/windows/qwindowsinputcontext.h
+++ b/src/plugins/platforms/windows/qwindowsinputcontext.h
@@ -67,10 +67,9 @@ public:
~QWindowsInputContext();
virtual void reset();
- virtual void update();
+ virtual void update(Qt::InputMethodQueries);
virtual void mouseHandler(int x, QMouseEvent *event);
- virtual void setFocusObject(QObject *o);
static QWindowsInputContext *instance();