diff options
Diffstat (limited to 'src/android')
4 files changed, 27 insertions, 45 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java index ea8e5cd44c..e62b5dab82 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java @@ -120,7 +120,7 @@ public class QtActivityDelegate private boolean m_keyboardIsVisible = false; public boolean m_backKeyPressedSent = false; - + private long m_showHideTimeStamp = System.nanoTime(); public void setFullScreen(boolean enterFullScreen) { @@ -201,12 +201,18 @@ public class QtActivityDelegate private final int ApplicationInactive = 0x2; private final int ApplicationActive = 0x4; - public void setKeyboardVisibility(boolean visibility) + + public boolean setKeyboardVisibility(boolean visibility, long timeStamp) { + if (m_showHideTimeStamp > timeStamp) + return false; + m_showHideTimeStamp = timeStamp; + if (m_keyboardIsVisible == visibility) - return; + return false; m_keyboardIsVisible = visibility; QtNative.keyboardVisibilityChanged(m_keyboardIsVisible); + return true; } public void resetSoftwareKeyboard() { @@ -304,11 +310,11 @@ public class QtActivityDelegate QtNativeInputConnection.updateCursorPosition(); //FALLTHROUGH case InputMethodManager.RESULT_UNCHANGED_SHOWN: - setKeyboardVisibility(true); + setKeyboardVisibility(true, System.nanoTime()); break; case InputMethodManager.RESULT_HIDDEN: case InputMethodManager.RESULT_UNCHANGED_HIDDEN: - setKeyboardVisibility(false); + setKeyboardVisibility(false, System.nanoTime()); break; } } @@ -331,11 +337,11 @@ public class QtActivityDelegate switch (resultCode) { case InputMethodManager.RESULT_SHOWN: case InputMethodManager.RESULT_UNCHANGED_SHOWN: - setKeyboardVisibility(true); + setKeyboardVisibility(true, System.nanoTime()); break; case InputMethodManager.RESULT_HIDDEN: case InputMethodManager.RESULT_UNCHANGED_HIDDEN: - setKeyboardVisibility(false); + setKeyboardVisibility(false, System.nanoTime()); break; } } @@ -827,7 +833,7 @@ public class QtActivityDelegate if (keyCode == KeyEvent.KEYCODE_BACK && !m_backKeyPressedSent) { hideSoftwareKeyboard(); - setKeyboardVisibility(false); + setKeyboardVisibility(false, System.nanoTime()); return true; } 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 5e6e227c2b..6de66fe512 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java @@ -61,6 +61,8 @@ class QtExtractedText class QtNativeInputConnection { + static native boolean beginBatchEdit(); + static native boolean endBatchEdit(); static native boolean commitText(String text, int newCursorPosition); static native boolean commitCompletion(String text, int position); static native boolean deleteSurroundingText(int leftLength, int rightLength); @@ -82,18 +84,11 @@ class QtNativeInputConnection } class HideKeyboardRunnable implements Runnable { - private QtInputConnection m_connection; - HideKeyboardRunnable(QtInputConnection connection) - { - m_connection = connection; - } + private long m_hideTimeStamp = System.nanoTime(); @Override public void run() { - if (m_connection.getInputState() == QtInputConnection.InputStates.Hiding) { - QtNative.activityDelegate().setKeyboardVisibility(false); - m_connection.reset(); - } + QtNative.activityDelegate().setKeyboardVisibility(false, m_hideTimeStamp); } } @@ -107,34 +102,14 @@ public class QtInputConnection extends BaseInputConnection private static final int ID_SWITCH_INPUT_METHOD = android.R.id.switchInputMethod; private static final int ID_ADD_TO_DICTIONARY = android.R.id.addToDictionary; - - enum InputStates { Visible, FinishComposing, Hiding }; - private QtEditText m_view = null; - private InputStates m_inputState = InputStates.Visible; - - public void reset() - { - m_inputState = InputStates.Visible; - } - - public InputStates getInputState() - { - return m_inputState; - } private void setClosing(boolean closing) { - if (closing && m_inputState == InputStates.Hiding) - return; - - if (closing && m_view.getActivityDelegate().isSoftwareKeyboardVisible()) { - m_view.postDelayed(new HideKeyboardRunnable(this), 100); - m_inputState = InputStates.Hiding; + if (closing) { + m_view.postDelayed(new HideKeyboardRunnable(), 100); } else { - if (m_inputState == InputStates.Hiding) - QtNative.activityDelegate().setKeyboardVisibility(true); - m_inputState = closing ? InputStates.FinishComposing : InputStates.Visible; + QtNative.activityDelegate().setKeyboardVisibility(true, System.nanoTime()); } } @@ -148,14 +123,14 @@ public class QtInputConnection extends BaseInputConnection public boolean beginBatchEdit() { setClosing(false); - return true; + return QtNativeInputConnection.beginBatchEdit(); } @Override public boolean endBatchEdit() { -// setClosing(false); - return true; + setClosing(false); + return QtNativeInputConnection.endBatchEdit(); } @Override diff --git a/src/android/java/AndroidManifest.xml b/src/android/java/AndroidManifest.xml index 3209ab58ac..8e551ba7ac 100644 --- a/src/android/java/AndroidManifest.xml +++ b/src/android/java/AndroidManifest.xml @@ -4,7 +4,8 @@ <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="@string/app_name" - android:screenOrientation="unspecified"> + android:screenOrientation="unspecified" + android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> diff --git a/src/android/java/res/values/libs.xml b/src/android/java/res/values/libs.xml index 797e6bb8c4..664ab0abec 100644 --- a/src/android/java/res/values/libs.xml +++ b/src/android/java/res/values/libs.xml @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='utf-8'?> <resources> <array name="qt_sources"> - <item>https://download.qt-project.org/ministro/android/qt5/qt-5.2</item> + <item>https://download.qt-project.org/ministro/android/qt5/qt-5.3</item> </array> <!-- The following is handled automatically by the deployment tool. It should |