diff options
| -rw-r--r-- | core/java/android/inputmethodservice/ExtractEditLayout.java | 24 | ||||
| -rw-r--r-- | core/java/android/inputmethodservice/InputMethodService.java | 23 |
2 files changed, 40 insertions, 7 deletions
diff --git a/core/java/android/inputmethodservice/ExtractEditLayout.java b/core/java/android/inputmethodservice/ExtractEditLayout.java index 5cfa998857b7..25c0c996a6e5 100644 --- a/core/java/android/inputmethodservice/ExtractEditLayout.java +++ b/core/java/android/inputmethodservice/ExtractEditLayout.java @@ -16,9 +16,6 @@ package android.inputmethodservice; -import com.android.internal.view.menu.MenuBuilder; -import com.android.internal.view.menu.MenuPopupHelper; - import android.content.Context; import android.util.AttributeSet; import android.view.ActionMode; @@ -29,6 +26,9 @@ import android.view.View; import android.widget.Button; import android.widget.LinearLayout; +import com.android.internal.view.menu.MenuBuilder; +import com.android.internal.view.menu.MenuPopupHelper; + /** * ExtractEditLayout provides an ActionMode presentation for the * limited screen real estate in extract mode. @@ -61,6 +61,22 @@ public class ExtractEditLayout extends LinearLayout { return null; } + /** + * @return true if an action mode is currently active. + */ + public boolean isActionModeStarted() { + return mActionMode != null; + } + + /** + * Finishes a possibly started action mode. + */ + public void finishActionMode() { + if (mActionMode != null) { + mActionMode.finish(); + } + } + @Override public void onFinishInflate() { super.onFinishInflate(); @@ -92,7 +108,7 @@ public class ExtractEditLayout extends LinearLayout { @Override public void setTitle(int resId) { - // Title will nor be shown. + // Title will not be shown. } @Override diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 7d3cd9249aa4..440d64901297 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -637,6 +637,7 @@ public class InputMethodService extends AbstractInputMethodService { * configuration change happens. */ public void onInitializeInterface() { + // Intentionally empty } void initialize() { @@ -876,8 +877,7 @@ public class InputMethodService extends AbstractInputMethodService { } if (changed) { - onConfigureWindow(mWindow.getWindow(), isFullscreen, - !mShowInputRequested); + onConfigureWindow(mWindow.getWindow(), isFullscreen, !mShowInputRequested); mLastShowInputRequested = mShowInputRequested; } } @@ -935,7 +935,7 @@ public class InputMethodService extends AbstractInputMethodService { } return true; } - + /** * Controls the visibility of the extracted text area. This only applies * when the input method is in fullscreen mode, and thus showing extracted @@ -1242,6 +1242,7 @@ public class InputMethodService extends AbstractInputMethodService { * same text field as before. */ public void onStartInputView(EditorInfo info, boolean restarting) { + // Intentionally empty } /** @@ -1286,6 +1287,7 @@ public class InputMethodService extends AbstractInputMethodService { * same text field as before. */ public void onStartCandidatesView(EditorInfo info, boolean restarting) { + // Intentionally empty } /** @@ -1455,6 +1457,7 @@ public class InputMethodService extends AbstractInputMethodService { * for the window has occurred (creating its views etc). */ public void onWindowShown() { + // Intentionally empty } /** @@ -1462,6 +1465,7 @@ public class InputMethodService extends AbstractInputMethodService { * after previously being visible. */ public void onWindowHidden() { + // Intentionally empty } /** @@ -1472,6 +1476,7 @@ public class InputMethodService extends AbstractInputMethodService { * and {@link #getCurrentInputConnection} return valid objects. */ public void onBindInput() { + // Intentionally empty } /** @@ -1481,6 +1486,7 @@ public class InputMethodService extends AbstractInputMethodService { * valid objects. */ public void onUnbindInput() { + // Intentionally empty } /** @@ -1496,6 +1502,7 @@ public class InputMethodService extends AbstractInputMethodService { * session with the editor. */ public void onStartInput(EditorInfo attribute, boolean restarting) { + // Intentionally empty } void doFinishInput() { @@ -1570,6 +1577,7 @@ public class InputMethodService extends AbstractInputMethodService { * <p>The default implementation here does nothing. */ public void onDisplayCompletions(CompletionInfo[] completions) { + // Intentionally empty } /** @@ -1626,6 +1634,7 @@ public class InputMethodService extends AbstractInputMethodService { * @param focusChanged true if the user changed the focused view by this click. */ public void onViewClicked(boolean focusChanged) { + // Intentionally empty } /** @@ -1634,6 +1643,7 @@ public class InputMethodService extends AbstractInputMethodService { * The default implementation does nothing. */ public void onUpdateCursor(Rect newCursor) { + // Intentionally empty } /** @@ -1664,6 +1674,13 @@ public class InputMethodService extends AbstractInputMethodService { private boolean handleBack(boolean doIt) { if (mShowInputRequested) { + if (isExtractViewShown() && mExtractView instanceof ExtractEditLayout) { + ExtractEditLayout extractEditLayout = (ExtractEditLayout) mExtractView; + if (extractEditLayout.isActionModeStarted()) { + if (doIt) extractEditLayout.finishActionMode(); + return true; + } + } // If the soft input area is shown, back closes it and we // consume the back key. if (doIt) requestHideSelf(0); |