From 7908da98f01c24bd95a9e7a7f938de697a6a02b6 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Sat, 5 Dec 2015 14:57:06 +0100 Subject: Android: Fix QInputMethod's visible property There are many cases in which finishComposingText is called and it does not mean the keyboard will be hidden. Add a check that there are space reserved for the keyboard before closing it. This is not helping with floating keyboards, but it's already better. [ChangeLog] Made QInputMethod's visible more accurate Task-number: QTBUG-42444 Change-Id: I4d706f1ea5ba2f0f6d3ec1921139317bc4f8dafb Reviewed-by: BogDan Vatra --- .../src/org/qtproject/qt5/android/QtInputConnection.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java b/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java index 0f3e9083d4..1536d60faa 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java @@ -40,6 +40,9 @@ import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.ExtractedText; import android.view.inputmethod.ExtractedTextRequest; import android.view.inputmethod.InputMethodManager; +import android.graphics.Rect; +import android.app.Activity; +import android.util.DisplayMetrics; class QtExtractedText { @@ -80,7 +83,15 @@ class HideKeyboardRunnable implements Runnable { @Override public void run() { - QtNative.activityDelegate().setKeyboardVisibility(false, m_hideTimeStamp); + // Check that the keyboard is really no longer there. + Activity activity = QtNative.activity(); + Rect r = new Rect(); + activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(r); + DisplayMetrics metrics = new DisplayMetrics(); + activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); + final int kbHeight = metrics.heightPixels - r.bottom; + if (kbHeight < 100) + QtNative.activityDelegate().setKeyboardVisibility(false, m_hideTimeStamp); } } -- cgit v1.2.3