diff options
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java | 39 |
1 files changed, 36 insertions, 3 deletions
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 76fa974e8d..729c244b2c 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java @@ -41,6 +41,8 @@ package org.qtproject.qt5.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; @@ -94,9 +96,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); } @@ -257,6 +267,29 @@ public class QtInputConnection extends BaseInputConnection // If the sendKeyEvent was invoked, it means that the button not related with composingText was used // In such case composing text (if it exists) should be finished immediately finishComposingText(); + if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && m_view != null) { + KeyEvent fakeEvent; + switch (m_view.m_imeOptions) { + case android.view.inputmethod.EditorInfo.IME_ACTION_NEXT: + fakeEvent = new KeyEvent(event.getDownTime(), + event.getEventTime(), + event.getAction(), + KeyEvent.KEYCODE_TAB, + event.getRepeatCount(), + event.getMetaState()); + return super.sendKeyEvent(fakeEvent); + case android.view.inputmethod.EditorInfo.IME_ACTION_PREVIOUS: + fakeEvent = new KeyEvent(event.getDownTime(), + event.getEventTime(), + event.getAction(), + KeyEvent.KEYCODE_TAB, + event.getRepeatCount(), + KeyEvent.META_SHIFT_ON); + return super.sendKeyEvent(fakeEvent); + default: + break; + } + } return super.sendKeyEvent(event); } |