From c43d136ef839f807096c4280b709b0cbe2d84a0f Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Fri, 29 Oct 2021 13:47:58 -0400 Subject: [PATCH] Pass configuration changes to all pages In PagedTileLayout, all pages are inflated previously and the view pager only attaches/dettaches pages. However, configuration changes are only dispatched to direct children of the view. This change makes it so that non-attached pages are also notified. In particular, fontWeightAdjustment was not being passed, and it's not one of the changes that causes fragments in SystemUI to be reinflated. Test: manual Fixes: 200882432 Change-Id: Ie2bd0eccf1d1e71f364501612bb6e6be8aa29bc9 --- .../src/com/android/systemui/qs/PagedTileLayout.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java index 7e5ff8a955623..1784f73e1f531 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java @@ -112,6 +112,16 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); + // Pass configuration change to non-attached pages as well. Some config changes will cause + // QS to recreate itself (as determined in FragmentHostManager), but in order to minimize + // those, make sure that all get passed to all pages. + int numPages = mPages.size(); + for (int i = 0; i < numPages; i++) { + View page = mPages.get(i); + if (page.getParent() == null) { + page.dispatchConfigurationChanged(newConfig); + } + } if (mLayoutOrientation != newConfig.orientation) { mLayoutOrientation = newConfig.orientation; mDistributeTiles = true;