Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 34703b6d authored by Gilles Debunne's avatar Gilles Debunne
Browse files

The back key stops selection mode in extracted text mode.

The previous behavior stopped the extracted text mode, leaving the
text selected and without handles in the app.

As what happens in normal (non extracted) mode, the back key now
stops the text selection mode. A second back will get the user back
to normal mode.

Change-Id: I2e8d2d7a1a1e1344997da75438f8df804fb8735c
parent 11e2e5de
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -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
+20 −3
Original line number Diff line number Diff line
@@ -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;
        }
    }
@@ -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);