Merge "Optimize RTL properties resolution" into jb-mr2-dev

This commit is contained in:
Fabrice Di Meglio
2013-05-04 00:48:12 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 9 deletions

View File

@ -11749,10 +11749,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
/**
* Resolve all RTL related properties.
*
* @return true if resolution of RTL properties has been done
*
* @hide
*/
public void resolveRtlPropertiesIfNeeded() {
if (!needRtlPropertiesResolution()) return;
public boolean resolveRtlPropertiesIfNeeded() {
if (!needRtlPropertiesResolution()) return false;
// Order is important here: LayoutDirection MUST be resolved first
if (!isLayoutDirectionResolved()) {
@ -11773,6 +11775,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
resolveDrawables();
}
onRtlPropertiesChanged(getLayoutDirection());
return true;
}
/**
@ -11825,6 +11828,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
/**
* @return true if RTL properties need resolution.
*
*/
private boolean needRtlPropertiesResolution() {
return (mPrivateFlags2 & ALL_RTL_PROPERTIES_RESOLVED) != ALL_RTL_PROPERTIES_RESOLVED;

View File

@ -5453,15 +5453,19 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
* @hide
*/
@Override
public void resolveRtlPropertiesIfNeeded() {
super.resolveRtlPropertiesIfNeeded();
int count = getChildCount();
for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
if (child.isLayoutDirectionInherited()) {
child.resolveRtlPropertiesIfNeeded();
public boolean resolveRtlPropertiesIfNeeded() {
final boolean result = super.resolveRtlPropertiesIfNeeded();
// We dont need to resolve the children RTL properties if nothing has changed for the parent
if (result) {
int count = getChildCount();
for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
if (child.isLayoutDirectionInherited()) {
child.resolveRtlPropertiesIfNeeded();
}
}
}
return result;
}
/**