diff options
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/QtInputConnection.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/QtInputConnection.java | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtInputConnection.java b/src/android/jar/src/org/qtproject/qt/android/QtInputConnection.java index c7401ee342..abcc76da17 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtInputConnection.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtInputConnection.java @@ -5,6 +5,8 @@ package org.qtproject.qt.android; import android.content.Context; +import android.os.Build; +import android.view.WindowMetrics; import android.view.inputmethod.BaseInputConnection; import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.ExtractedText; @@ -58,9 +60,17 @@ class HideKeyboardRunnable implements Runnable { 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; + + int screenHeight = 0; + if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { + DisplayMetrics metrics = new DisplayMetrics(); + activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); + screenHeight = metrics.heightPixels; + } else { + final WindowMetrics maximumWindowMetrics = activity.getWindowManager().getMaximumWindowMetrics(); + screenHeight = maximumWindowMetrics.getBounds().height(); + } + final int kbHeight = screenHeight - r.bottom; if (kbHeight < 100) QtNative.activityDelegate().setKeyboardVisibility(false, m_hideTimeStamp); } @@ -242,7 +252,11 @@ public class QtInputConnection extends BaseInputConnection KeyEvent.META_SHIFT_ON); return super.sendKeyEvent(fakeEvent); + case android.view.inputmethod.EditorInfo.IME_FLAG_NO_ENTER_ACTION: + break; + default: + QtNative.activityDelegate().hideSoftwareKeyboard(); break; } } |