diff options
| author | Yohei Yukawa <yukawa@google.com> | 2015-06-25 20:16:27 +0000 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2015-06-25 20:16:27 +0000 |
| commit | e9311579da9fcbc1f32deb0ca29848a46b218d1a (patch) | |
| tree | d0c9c9f0ad71652e7cca3558382bd41d1e54144a /core/java/android/inputmethodservice/InputMethodService.java | |
| parent | a02cf96bbdf05b98a4e2c3b2f8b4d1ea728f1f06 (diff) | |
| parent | 6a402ca629185576cf774587da8079977833d25e (diff) | |
am 6a402ca6: am d408d293: am ab142f7f: Merge "Handle back key to cancel text action mode in full-screen IME." into mnc-dev
* commit '6a402ca629185576cf774587da8079977833d25e':
Handle back key to cancel text action mode in full-screen IME.
Diffstat (limited to 'core/java/android/inputmethodservice/InputMethodService.java')
| -rw-r--r-- | core/java/android/inputmethodservice/InputMethodService.java | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index e163d5adf4d7..3b996845b7d1 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -1819,7 +1819,18 @@ public class InputMethodService extends AbstractInputMethodService { } return false; } - + + /** + * @return {#link ExtractEditText} if it is considered to be visible and active. Otherwise + * {@code null} is returned. + */ + private ExtractEditText getExtractEditTextIfVisible() { + if (!isExtractViewShown() || !isInputViewShown()) { + return null; + } + return mExtractEditText; + } + /** * Override this to intercept key down events before they are processed by the * application. If you return true, the application will not @@ -1835,6 +1846,10 @@ public class InputMethodService extends AbstractInputMethodService { */ public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { + final ExtractEditText eet = getExtractEditTextIfVisible(); + if (eet != null && eet.handleBackInTextActionModeIfNeeded(event)) { + return true; + } if (handleBack(false)) { event.startTracking(); return true; @@ -1882,11 +1897,15 @@ public class InputMethodService extends AbstractInputMethodService { * them to perform navigation in the underlying application. */ public boolean onKeyUp(int keyCode, KeyEvent event) { - if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.isTracking() - && !event.isCanceled()) { - return handleBack(true); + if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { + final ExtractEditText eet = getExtractEditTextIfVisible(); + if (eet != null && eet.handleBackInTextActionModeIfNeeded(event)) { + return true; + } + if (event.isTracking() && !event.isCanceled()) { + return handleBack(true); + } } - return doMovementKey(keyCode, event, MOVEMENT_UP); } @@ -1952,10 +1971,10 @@ public class InputMethodService extends AbstractInputMethodService { } onExtractedCursorMovement(dx, dy); } - + boolean doMovementKey(int keyCode, KeyEvent event, int count) { - final ExtractEditText eet = mExtractEditText; - if (isExtractViewShown() && isInputViewShown() && eet != null) { + final ExtractEditText eet = getExtractEditTextIfVisible(); + if (eet != null) { // If we are in fullscreen mode, the cursor will move around // the extract edit text, but should NOT cause focus to move // to other fields. @@ -2006,7 +2025,7 @@ public class InputMethodService extends AbstractInputMethodService { return true; } } - + return false; } |
