Merge "Prevent refocus after entering touch mode" into klp-dev

This commit is contained in:
Alan Viverette
2013-08-15 00:01:02 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 11 deletions

View File

@@ -4572,10 +4572,23 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
System.out.println(this + " clearFocus()");
}
clearFocusInternal(true, true);
}
/**
* Clears focus from the view, optionally propagating the change up through
* the parent hierarchy and requesting that the root view place new focus.
*
* @param propagate whether to propagate the change up through the parent
* hierarchy
* @param refocus when propagate is true, specifies whether to request the
* root view place new focus
*/
void clearFocusInternal(boolean propagate, boolean refocus) {
if ((mPrivateFlags & PFLAG_FOCUSED) != 0) {
mPrivateFlags &= ~PFLAG_FOCUSED;
if (mParent != null) {
if (propagate && mParent != null) {
mParent.clearChildFocus(this);
}
@@ -4583,7 +4596,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
refreshDrawableState();
if (!rootViewRequestFocus()) {
if (propagate && (!refocus || !rootViewRequestFocus())) {
notifyGlobalFocusCleared(this);
}
}
@@ -4613,12 +4626,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
System.out.println(this + " unFocus()");
}
if ((mPrivateFlags & PFLAG_FOCUSED) != 0) {
mPrivateFlags &= ~PFLAG_FOCUSED;
onFocusChanged(false, 0, null);
refreshDrawableState();
}
clearFocusInternal(false, false);
}
/**

View File

@@ -3271,9 +3271,9 @@ public final class ViewRootImpl implements ViewParent,
// focus
return ancestorToTakeFocus.requestFocus();
} else {
// nothing appropriate to have focus in touch mode, clear it
// out
focused.clearFocus();
// There's nothing to focus. Clear and propagate through the
// hierarchy, but don't attempt to place new focus.
focused.clearFocusInternal(true, false);
return true;
}
}