Merge "The back key stops selection mode in extracted text mode."
diff --git a/core/java/android/inputmethodservice/ExtractEditLayout.java b/core/java/android/inputmethodservice/ExtractEditLayout.java
index 5cfa998..25c0c99 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.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 @@
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 @@
@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 7d3cd92..440d649 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -637,6 +637,7 @@
* configuration change happens.
*/
public void onInitializeInterface() {
+ // Intentionally empty
}
void initialize() {
@@ -876,8 +877,7 @@
}
if (changed) {
- onConfigureWindow(mWindow.getWindow(), isFullscreen,
- !mShowInputRequested);
+ onConfigureWindow(mWindow.getWindow(), isFullscreen, !mShowInputRequested);
mLastShowInputRequested = mShowInputRequested;
}
}
@@ -935,7 +935,7 @@
}
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 @@
* same text field as before.
*/
public void onStartInputView(EditorInfo info, boolean restarting) {
+ // Intentionally empty
}
/**
@@ -1286,6 +1287,7 @@
* same text field as before.
*/
public void onStartCandidatesView(EditorInfo info, boolean restarting) {
+ // Intentionally empty
}
/**
@@ -1455,6 +1457,7 @@
* for the window has occurred (creating its views etc).
*/
public void onWindowShown() {
+ // Intentionally empty
}
/**
@@ -1462,6 +1465,7 @@
* after previously being visible.
*/
public void onWindowHidden() {
+ // Intentionally empty
}
/**
@@ -1472,6 +1476,7 @@
* and {@link #getCurrentInputConnection} return valid objects.
*/
public void onBindInput() {
+ // Intentionally empty
}
/**
@@ -1481,6 +1486,7 @@
* valid objects.
*/
public void onUnbindInput() {
+ // Intentionally empty
}
/**
@@ -1496,6 +1502,7 @@
* session with the editor.
*/
public void onStartInput(EditorInfo attribute, boolean restarting) {
+ // Intentionally empty
}
void doFinishInput() {
@@ -1570,6 +1577,7 @@
* <p>The default implementation here does nothing.
*/
public void onDisplayCompletions(CompletionInfo[] completions) {
+ // Intentionally empty
}
/**
@@ -1626,6 +1634,7 @@
* @param focusChanged true if the user changed the focused view by this click.
*/
public void onViewClicked(boolean focusChanged) {
+ // Intentionally empty
}
/**
@@ -1634,6 +1643,7 @@
* The default implementation does nothing.
*/
public void onUpdateCursor(Rect newCursor) {
+ // Intentionally empty
}
/**
@@ -1664,6 +1674,13 @@
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);