summaryrefslogtreecommitdiffstats
path: root/src/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/android')
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java22
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java45
-rw-r--r--src/android/java/AndroidManifest.xml3
-rw-r--r--src/android/java/res/values/libs.xml2
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