diff options
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsinputcontext.cpp')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsinputcontext.cpp | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/plugins/platforms/windows/qwindowsinputcontext.cpp b/src/plugins/platforms/windows/qwindowsinputcontext.cpp index 261c931f2b..d1e99c037b 100644 --- a/src/plugins/platforms/windows/qwindowsinputcontext.cpp +++ b/src/plugins/platforms/windows/qwindowsinputcontext.cpp @@ -43,16 +43,15 @@ #include "qwindowsintegration.h" #include "qwindowsmousehandler.h" -#include <QtCore/QDebug> -#include <QtCore/QObject> -#include <QtCore/QRect> -#include <QtCore/QRectF> -#include <QtCore/QTextBoundaryFinder> +#include <QtCore/qdebug.h> +#include <QtCore/qobject.h> +#include <QtCore/qrect.h> +#include <QtCore/qtextboundaryfinder.h> -#include <QtGui/QInputMethodEvent> -#include <QtGui/QTextCharFormat> -#include <QtGui/QPalette> -#include <QtGui/QGuiApplication> +#include <QtGui/qevent.h> +#include <QtGui/qtextformat.h> +#include <QtGui/qpalette.h> +#include <QtGui/qguiapplication.h> #include <private/qhighdpiscaling_p.h> @@ -243,7 +242,18 @@ QRectF QWindowsInputContext::keyboardRect() const bool QWindowsInputContext::isInputPanelVisible() const { HWND hwnd = getVirtualKeyboardWindowHandle(); - return hwnd && ::IsWindowEnabled(hwnd) && ::IsWindowVisible(hwnd); + if (hwnd && ::IsWindowEnabled(hwnd) && ::IsWindowVisible(hwnd)) + return true; + // check if the Input Method Editor is open + if (inputMethodAccepted()) { + if (QWindow *window = QGuiApplication::focusWindow()) { + if (QWindowsWindow *platformWindow = QWindowsWindow::windowsWindowOf(window)) { + if (HIMC himc = ImmGetContext(platformWindow->handle())) + return ImmGetOpenStatus(himc); + } + } + } + return false; } void QWindowsInputContext::showInputPanel() |