Merge "Update layout direction if ViewRoot is preserved" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-10-12 13:39:45 +00:00
committed by Android (Google) Code Review

View File

@@ -1102,7 +1102,7 @@ public final class ViewRootImpl implements ViewParent,
// Update the last resource config in case the resource configuration was changed while
// activity relaunched.
mLastConfigurationFromResources.setTo(getConfiguration());
updateLastConfigurationFromResources(getConfiguration());
}
private Configuration getConfiguration() {
@@ -5396,13 +5396,7 @@ public final class ViewRootImpl implements ViewParent,
// Update the display with new DisplayAdjustments.
updateInternalDisplay(mDisplay.getDisplayId(), localResources);
final int lastLayoutDirection = mLastConfigurationFromResources.getLayoutDirection();
final int currentLayoutDirection = config.getLayoutDirection();
mLastConfigurationFromResources.setTo(config);
if (lastLayoutDirection != currentLayoutDirection
&& mViewLayoutDirectionInitial == View.LAYOUT_DIRECTION_INHERIT) {
mView.setLayoutDirection(currentLayoutDirection);
}
updateLastConfigurationFromResources(config);
mView.dispatchConfigurationChanged(config);
// We could have gotten this {@link Configuration} update after we called
@@ -5416,6 +5410,17 @@ public final class ViewRootImpl implements ViewParent,
updateForceDarkMode();
}
private void updateLastConfigurationFromResources(Configuration resConfig) {
final int lastLayoutDirection = mLastConfigurationFromResources.getLayoutDirection();
final int currentLayoutDirection = resConfig.getLayoutDirection();
mLastConfigurationFromResources.setTo(resConfig);
// Update layout direction in case the language or screen layout is changed.
if (lastLayoutDirection != currentLayoutDirection && mView != null
&& mViewLayoutDirectionInitial == View.LAYOUT_DIRECTION_INHERIT) {
mView.setLayoutDirection(currentLayoutDirection);
}
}
/**
* Return true if child is an ancestor of parent, (or equal to the parent).
*/