diff options
author | BogDan Vatra <bogdan@kde.org> | 2014-03-22 08:08:08 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-26 07:22:35 +0100 |
commit | f1f07eae2d40f202a709af33ca1e8d86551c9ace (patch) | |
tree | 6ace627ce63597e3c1da381b4b6ff2ba0eb579f1 /src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java | |
parent | a0dc3e608fe67ae1ec3f0ee92e1dc15ebaa0fe9e (diff) |
Android: Fix software keyboard show/hide state
Task-number: QTBUG-34831
Change-Id: Ic38334d011ceef2dc75e4fb3fcea48f62aeea757
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java | 22 |
1 files changed, 14 insertions, 8 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; } |