Merge "Fix last character of password field being visible after rotation" into froyo

This commit is contained in:
Kenny Root
2010-04-06 14:33:24 -07:00
committed by Android (Google) Code Review

View File

@@ -51,6 +51,8 @@ implements TransformationMethod, TextWatcher
sp.removeSpan(vr[i]); sp.removeSpan(vr[i]);
} }
removeVisibleSpans(sp);
sp.setSpan(new ViewReference(view), 0, 0, sp.setSpan(new ViewReference(view), 0, 0,
Spannable.SPAN_POINT_POINT); Spannable.SPAN_POINT_POINT);
} }
@@ -100,10 +102,7 @@ implements TransformationMethod, TextWatcher
int pref = TextKeyListener.getInstance().getPrefs(v.getContext()); int pref = TextKeyListener.getInstance().getPrefs(v.getContext());
if ((pref & TextKeyListener.SHOW_PASSWORD) != 0) { if ((pref & TextKeyListener.SHOW_PASSWORD) != 0) {
if (count > 0) { if (count > 0) {
Visible[] old = sp.getSpans(0, sp.length(), Visible.class); removeVisibleSpans(sp);
for (int i = 0; i < old.length; i++) {
sp.removeSpan(old[i]);
}
if (count == 1) { if (count == 1) {
sp.setSpan(new Visible(sp, this), start, start + count, sp.setSpan(new Visible(sp, this), start, start + count,
@@ -125,14 +124,18 @@ implements TransformationMethod, TextWatcher
if (sourceText instanceof Spannable) { if (sourceText instanceof Spannable) {
Spannable sp = (Spannable) sourceText; Spannable sp = (Spannable) sourceText;
Visible[] old = sp.getSpans(0, sp.length(), Visible.class); removeVisibleSpans(sp);
for (int i = 0; i < old.length; i++) {
sp.removeSpan(old[i]);
}
} }
} }
} }
private static void removeVisibleSpans(Spannable sp) {
Visible[] old = sp.getSpans(0, sp.length(), Visible.class);
for (int i = 0; i < old.length; i++) {
sp.removeSpan(old[i]);
}
}
private static class PasswordCharSequence private static class PasswordCharSequence
implements CharSequence, GetChars implements CharSequence, GetChars
{ {