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

Commit 0dcad2bd authored by Gilles Debunne's avatar Gilles Debunne
Browse files

Removed "Select word" option on password fields.

It would return an arbitrary selection around current position.
Rely on select all instead.

Bug: 3100750
Change-Id: I73d995e6481d7c230cc9f334c72fbfb7e9828007
parent e1f3976b
Loading
Loading
Loading
Loading
+28 −4
Original line number Diff line number Diff line
@@ -2956,6 +2956,25 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
        if (imm != null) imm.restartInput(this);
    }

    /**
     * It would be better to rely on the input type for everything. A password inputType should have
     * a password transformation. We should hence use isPasswordInputType instead of this method.
     *
     * We should:
     * - Call setInputType in setKeyListener instead of changing the input type directly (which
     * would install the correct transformation).
     * - Refuse the installation of a non-password transformation in setTransformation if the input
     * type is password.
     *
     * However, this is like this for legacy reasons and we cannot break existing apps. This method
     * is useful since it matches what the user can see (obfuscated text or not).
     *
     * @return true if the current transformation method is of the password type.
     */
    private boolean hasPasswordTransformationMethod() {
        return mTransformation instanceof PasswordTransformationMethod;
    }

    private boolean isPasswordInputType(int inputType) {
        final int variation = inputType & (EditorInfo.TYPE_MASK_CLASS
                | EditorInfo.TYPE_MASK_VARIATION);
@@ -7135,7 +7154,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
    }

    private boolean canCut() {
        if (mTransformation instanceof PasswordTransformationMethod) {
        if (hasPasswordTransformationMethod()) {
            return false;
        }

@@ -7149,7 +7168,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
    }

    private boolean canCopy() {
        if (mTransformation instanceof PasswordTransformationMethod) {
        if (hasPasswordTransformationMethod()) {
            return false;
        }

@@ -7398,8 +7417,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
            MenuHandler handler = new MenuHandler();

            if (canSelectText()) {
                if (!hasPasswordTransformationMethod()) {
                    // selectCurrentWord is not available on a password field and would return an
                    // arbitrary 10-charater selection around pressed position. Discard it.
                    // SelectAll is still useful to be able to clear the field using the delete key.
                    menu.add(0, ID_START_SELECTING_TEXT, 0, com.android.internal.R.string.selectText).
                    setOnMenuItemClickListener(handler);
                }
                menu.add(0, ID_SELECT_ALL, 0, com.android.internal.R.string.selectAll).
                     setOnMenuItemClickListener(handler).
                     setAlphabeticShortcut('a');