Merge "Fix bug #6427629 Clean up layout direction APIs" into jb-mr1-dev

This commit is contained in:
Fabrice Di Meglio
2012-09-23 16:19:03 -07:00
committed by Android (Google) Code Review
4 changed files with 22 additions and 15 deletions

View File

@ -24954,7 +24954,6 @@ package android.view {
method public float getPivotX(); method public float getPivotX();
method public float getPivotY(); method public float getPivotY();
method public int getResolvedTextAlignment(); method public int getResolvedTextAlignment();
method public int getResolvedTextDirection();
method public android.content.res.Resources getResources(); method public android.content.res.Resources getResources();
method public final int getRight(); method public final int getRight();
method protected float getRightFadingEdgeStrength(); method protected float getRightFadingEdgeStrength();

View File

@ -16500,6 +16500,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* {@link #TEXT_DIRECTION_LTR}, * {@link #TEXT_DIRECTION_LTR},
* {@link #TEXT_DIRECTION_RTL}, * {@link #TEXT_DIRECTION_RTL},
* {@link #TEXT_DIRECTION_LOCALE} * {@link #TEXT_DIRECTION_LOCALE}
*
* @hide
*/ */
@ViewDebug.ExportedProperty(category = "text", mapping = { @ViewDebug.ExportedProperty(category = "text", mapping = {
@ViewDebug.IntToString(from = TEXT_DIRECTION_INHERIT, to = "INHERIT"), @ViewDebug.IntToString(from = TEXT_DIRECTION_INHERIT, to = "INHERIT"),
@ -16509,7 +16511,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
@ViewDebug.IntToString(from = TEXT_DIRECTION_RTL, to = "RTL"), @ViewDebug.IntToString(from = TEXT_DIRECTION_RTL, to = "RTL"),
@ViewDebug.IntToString(from = TEXT_DIRECTION_LOCALE, to = "LOCALE") @ViewDebug.IntToString(from = TEXT_DIRECTION_LOCALE, to = "LOCALE")
}) })
public int getTextDirection() { public int getRawTextDirection() {
return (mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_MASK) >> PFLAG2_TEXT_DIRECTION_MASK_SHIFT; return (mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_MASK) >> PFLAG2_TEXT_DIRECTION_MASK_SHIFT;
} }
@ -16526,7 +16528,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* {@link #TEXT_DIRECTION_LOCALE} * {@link #TEXT_DIRECTION_LOCALE}
*/ */
public void setTextDirection(int textDirection) { public void setTextDirection(int textDirection) {
if (getTextDirection() != textDirection) { if (getRawTextDirection() != textDirection) {
// Reset the current text direction and the resolved one // Reset the current text direction and the resolved one
mPrivateFlags2 &= ~PFLAG2_TEXT_DIRECTION_MASK; mPrivateFlags2 &= ~PFLAG2_TEXT_DIRECTION_MASK;
resetResolvedTextDirection(); resetResolvedTextDirection();
@ -16543,10 +16545,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
/** /**
* Return the resolved text direction. * Return the resolved text direction.
* *
* This needs resolution if the value is TEXT_DIRECTION_INHERIT. The resolution matches * This needs resolution if the value is TEXT_DIRECTION_INHERIT. The resolution matches what has
* {@link #getTextDirection()}if it is not TEXT_DIRECTION_INHERIT, otherwise resolution proceeds * been set by {@link #setTextDirection(int)} if it is not TEXT_DIRECTION_INHERIT, otherwise the
* up the parent chain of the view. if there is no parent, then it will return the default * resolution proceeds up the parent chain of the view. If there is no parent, then it will
* {@link #TEXT_DIRECTION_FIRST_STRONG}. * return the default {@link #TEXT_DIRECTION_FIRST_STRONG}.
* *
* @return the resolved text direction. Returns one of: * @return the resolved text direction. Returns one of:
* *
@ -16556,7 +16558,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* {@link #TEXT_DIRECTION_RTL}, * {@link #TEXT_DIRECTION_RTL},
* {@link #TEXT_DIRECTION_LOCALE} * {@link #TEXT_DIRECTION_LOCALE}
*/ */
public int getResolvedTextDirection() { public int getTextDirection() {
// The text direction will be resolved only if needed // The text direction will be resolved only if needed
if ((mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_RESOLVED) != PFLAG2_TEXT_DIRECTION_RESOLVED) { if ((mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_RESOLVED) != PFLAG2_TEXT_DIRECTION_RESOLVED) {
resolveTextDirection(); resolveTextDirection();
@ -16575,14 +16577,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
if (hasRtlSupport()) { if (hasRtlSupport()) {
// Set resolved text direction flag depending on text direction flag // Set resolved text direction flag depending on text direction flag
final int textDirection = getTextDirection(); final int textDirection = getRawTextDirection();
switch(textDirection) { switch(textDirection) {
case TEXT_DIRECTION_INHERIT: case TEXT_DIRECTION_INHERIT:
if (canResolveTextDirection()) { if (canResolveTextDirection()) {
ViewGroup viewGroup = ((ViewGroup) mParent); ViewGroup viewGroup = ((ViewGroup) mParent);
// Set current resolved direction to the same value as the parent's one // Set current resolved direction to the same value as the parent's one
final int parentResolvedDirection = viewGroup.getResolvedTextDirection(); final int parentResolvedDirection = viewGroup.getTextDirection();
switch (parentResolvedDirection) { switch (parentResolvedDirection) {
case TEXT_DIRECTION_FIRST_STRONG: case TEXT_DIRECTION_FIRST_STRONG:
case TEXT_DIRECTION_ANY_RTL: case TEXT_DIRECTION_ANY_RTL:
@ -16628,7 +16630,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @return true if text direction resolution can be done otherwise return false. * @return true if text direction resolution can be done otherwise return false.
*/ */
private boolean canResolveTextDirection() { private boolean canResolveTextDirection() {
switch (getTextDirection()) { switch (getRawTextDirection()) {
case TEXT_DIRECTION_INHERIT: case TEXT_DIRECTION_INHERIT:
return (mParent != null) && (mParent instanceof ViewGroup); return (mParent != null) && (mParent instanceof ViewGroup);
default: default:
@ -16638,7 +16640,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
/** /**
* Reset resolved text direction. Text direction can be resolved with a call to * Reset resolved text direction. Text direction can be resolved with a call to
* getResolvedTextDirection(). * getTextDirection().
* *
* @hide * @hide
*/ */
@ -16646,6 +16648,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mPrivateFlags2 &= ~(PFLAG2_TEXT_DIRECTION_RESOLVED | PFLAG2_TEXT_DIRECTION_RESOLVED_MASK); mPrivateFlags2 &= ~(PFLAG2_TEXT_DIRECTION_RESOLVED | PFLAG2_TEXT_DIRECTION_RESOLVED_MASK);
} }
/**
* @hide
*/
public boolean isTextDirectionInherited() {
return (getRawTextDirection() == TEXT_DIRECTION_INHERIT);
}
/** /**
* Return the value specifying the text alignment or policy that was set with * Return the value specifying the text alignment or policy that was set with
* {@link #setTextAlignment(int)}. * {@link #setTextAlignment(int)}.

View File

@ -5271,7 +5271,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
if (child.isLayoutDirectionInherited()) { if (child.isLayoutDirectionInherited()) {
child.resetResolvedLayoutDirection(); child.resetResolvedLayoutDirection();
} }
if (child.getTextDirection() == TEXT_DIRECTION_INHERIT) { if (child.isTextDirectionInherited()) {
child.resetResolvedTextDirection(); child.resetResolvedTextDirection();
} }
if (child.getTextAlignment() == TEXT_ALIGNMENT_INHERIT) { if (child.getTextAlignment() == TEXT_ALIGNMENT_INHERIT) {

View File

@ -8192,8 +8192,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
final boolean defaultIsRtl = (getLayoutDirection() == LAYOUT_DIRECTION_RTL); final boolean defaultIsRtl = (getLayoutDirection() == LAYOUT_DIRECTION_RTL);
// Now, we can select the heuristic // Now, we can select the heuristic
int textDir = getResolvedTextDirection(); switch (getTextDirection()) {
switch (textDir) {
default: default:
case TEXT_DIRECTION_FIRST_STRONG: case TEXT_DIRECTION_FIRST_STRONG:
return (defaultIsRtl ? TextDirectionHeuristics.FIRSTSTRONG_RTL : return (defaultIsRtl ? TextDirectionHeuristics.FIRSTSTRONG_RTL :