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

Commit f4156ea6 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Make sure theme attributes don't get lost

When an app calls setTaskDescription it overrides the hidden
attributes derived from the theme. Make sure to not override these
if they aren't set in the new task description.

Test: Open Maps, go home, rotate, open maps again, make sure
navigation bar is black
Bug: 36703868

Change-Id: If3f8948fe81af324411c2e828834f5d81e3eeddd
parent 30d64f3a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5866,7 +5866,7 @@ public class Activity extends ContextThemeWrapper
     */
    public void setTaskDescription(ActivityManager.TaskDescription taskDescription) {
        if (mTaskDescription != taskDescription) {
            mTaskDescription.copyFrom(taskDescription);
            mTaskDescription.copyFromPreserveHiddenFields(taskDescription);
            // Scale the icon down to something reasonable if it is provided
            if (taskDescription.getIconFilename() == null && taskDescription.getIcon() != null) {
                final int size = ActivityManager.getLauncherLargeIconSizeInner(this);
+21 −0
Original line number Diff line number Diff line
@@ -1222,6 +1222,27 @@ public class ActivityManager {
            mNavigationBarColor = other.mNavigationBarColor;
        }

        /**
         * Copies this the values from another TaskDescription, but preserves the hidden fields
         * if they weren't set on {@code other}
         * @hide
         */
        public void copyFromPreserveHiddenFields(TaskDescription other) {
            mLabel = other.mLabel;
            mIcon = other.mIcon;
            mIconFilename = other.mIconFilename;
            mColorPrimary = other.mColorPrimary;
            if (other.mColorBackground != 0) {
                mColorBackground = other.mColorBackground;
            }
            if (other.mStatusBarColor != 0) {
                mStatusBarColor = other.mStatusBarColor;
            }
            if (other.mNavigationBarColor != 0) {
                mNavigationBarColor = other.mNavigationBarColor;
            }
        }

        private TaskDescription(Parcel source) {
            readFromParcel(source);
        }