Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6907dc8 authored by Alex Chau's avatar Alex Chau
Browse files

Use correct config.smallestScreenWidthDp when creating Resource in DeviceProfile

- This is a regression from ag/17070486 when tested, likely because DeviceProfiles are no longer re-created when changing display sizes, so correct values need to be calculated on the starting state

Bug: 221961069
Test: verify smallestWidth specific resource on changing display sizes
Change-Id: I1539bad4b35b36f0056d59307ab5fbec23a71f49
parent 8233d922
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -257,7 +257,8 @@ public class DeviceProfile {
        // Some more constants.
        context = getContext(context, info, isVerticalBarLayout() || (isTablet && isLandscape)
                ? Configuration.ORIENTATION_LANDSCAPE
                : Configuration.ORIENTATION_PORTRAIT);
                : Configuration.ORIENTATION_PORTRAIT,
                windowBounds);
        final Resources res = context.getResources();
        mMetrics = res.getDisplayMetrics();

@@ -1231,10 +1232,11 @@ public class DeviceProfile {
        writer.println(prefix + pxToDpStr("overviewGridSideMargin", overviewGridSideMargin));
    }

    private static Context getContext(Context c, Info info, int orientation) {
    private static Context getContext(Context c, Info info, int orientation, WindowBounds bounds) {
        Configuration config = new Configuration(c.getResources().getConfiguration());
        config.orientation = orientation;
        config.densityDpi = info.densityDpi;
        config.smallestScreenWidthDp = (int) info.smallestSizeDp(bounds);
        return c.createConfigurationContext(config);
    }

+9 −4
Original line number Diff line number Diff line
@@ -345,16 +345,21 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable {
         * Returns {@code true} if the bounds represent a tablet.
         */
        public boolean isTablet(WindowBounds bounds) {
            return dpiFromPx(Math.min(bounds.bounds.width(), bounds.bounds.height()),
                    densityDpi) >= MIN_TABLET_WIDTH;
            return smallestSizeDp(bounds) >= MIN_TABLET_WIDTH;
        }

        /**
         * Returns {@code true} if the bounds represent a large tablet.
         */
        public boolean isLargeTablet(WindowBounds bounds) {
            return dpiFromPx(Math.min(bounds.bounds.width(), bounds.bounds.height()),
                    densityDpi) >= MIN_LARGE_TABLET_WIDTH;
            return smallestSizeDp(bounds) >= MIN_LARGE_TABLET_WIDTH;
        }

        /**
         * Returns smallest size in dp for given bounds.
         */
        public float smallestSizeDp(WindowBounds bounds) {
            return dpiFromPx(Math.min(bounds.bounds.width(), bounds.bounds.height()), densityDpi);
        }
    }