From 51e71d411156054d291d88cdd4690f48f7710d43 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Mon, 21 Mar 2016 11:33:19 +0200 Subject: Android: Fix inputItemRectangle when using EnableHighDpiScaling When EnableHighDpiScaling is enabled, qGuiApp->inputMethod()- >inputItemRectangle() returns the position divided by pixel density, therefore all the controls positions must by multiplied by pixel density to translate them into screen coordinates. Task-number: QTBUG-52001 Change-Id: Iea92a912cfbab03a9497fc8cddc24bebd0db2192 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/plugins/platforms/android/qandroidinputcontext.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/plugins/platforms/android') diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp index 0eddb26959..f3ece3208e 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.cpp +++ b/src/plugins/platforms/android/qandroidinputcontext.cpp @@ -39,6 +39,7 @@ #include "androidjniinput.h" #include "qandroideventdispatcher.h" #include "androiddeadlockprotector.h" +#include "qandroidplatformintegration.h" #include #include #include @@ -47,6 +48,7 @@ #include #include #include +#include #include @@ -541,10 +543,13 @@ void QAndroidInputContext::showInputPanel() if (window) rect = QRect(window->mapToGlobal(rect.topLeft()), rect.size()); - QtAndroidInput::showSoftwareKeyboard(rect.left(), - rect.top(), - rect.width(), - rect.height(), + double pixelDensity = window ? QHighDpiScaling::factor(window) + : QHighDpiScaling::factor(QtAndroid::androidPlatformIntegration()->screen()); + + QtAndroidInput::showSoftwareKeyboard(rect.left() * pixelDensity, + rect.top() * pixelDensity, + rect.width() * pixelDensity, + rect.height() * pixelDensity, query->value(Qt::ImHints).toUInt(), query->value(Qt::ImEnterKeyType).toUInt() ); -- cgit v1.2.3