Loading core/java/android/widget/TextView.java +28 −4 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -7135,7 +7154,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } private boolean canCut() { if (mTransformation instanceof PasswordTransformationMethod) { if (hasPasswordTransformationMethod()) { return false; } Loading @@ -7149,7 +7168,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } private boolean canCopy() { if (mTransformation instanceof PasswordTransformationMethod) { if (hasPasswordTransformationMethod()) { return false; } Loading Loading @@ -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'); Loading Loading
core/java/android/widget/TextView.java +28 −4 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -7135,7 +7154,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } private boolean canCut() { if (mTransformation instanceof PasswordTransformationMethod) { if (hasPasswordTransformationMethod()) { return false; } Loading @@ -7149,7 +7168,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } private boolean canCopy() { if (mTransformation instanceof PasswordTransformationMethod) { if (hasPasswordTransformationMethod()) { return false; } Loading Loading @@ -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'); Loading