From dbeefe3315d718f022b3b499311064a3fb015425 Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Tue, 3 Apr 2018 16:52:41 -0400 Subject: [PATCH] Fix icon tinting when in split screen NotificationIconAreaController, StatusBarWifiView, StatusBarMobileView all now respect the tintArea when `onDarkChanged` gets called Test: visual; Split screen, chrome on top and settings on bottom, no icons should be dark. Change-Id: I7aa8f3383da3855e8ceab702539fce71edaa6af2 Fixes: 77494939 --- .../android/systemui/statusbar/StatusBarMobileView.java | 4 ++++ .../android/systemui/statusbar/StatusBarWifiView.java | 4 ++++ .../statusbar/phone/NotificationIconAreaController.java | 9 ++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java index b7620f30d742e..f81671b2f3b57 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar; import static com.android.systemui.statusbar.policy.DarkIconDispatcher.getTint; +import static com.android.systemui.statusbar.policy.DarkIconDispatcher.isInArea; import android.content.Context; import android.content.res.ColorStateList; @@ -161,6 +162,9 @@ public class StatusBarMobileView extends AlphaOptimizedLinearLayout implements D @Override public void onDarkChanged(Rect area, float darkIntensity, int tint) { + if (!isInArea(area, this)) { + return; + } mMobileDrawable.setDarkIntensity(darkIntensity); ColorStateList color = ColorStateList.valueOf(getTint(area, this, tint)); mIn.setImageTintList(color); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java index afd373ed6321e..62cd16fca3bdb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar; import static com.android.systemui.statusbar.policy.DarkIconDispatcher.getTint; +import static com.android.systemui.statusbar.policy.DarkIconDispatcher.isInArea; import android.content.Context; import android.content.res.ColorStateList; @@ -175,6 +176,9 @@ public class StatusBarWifiView extends AlphaOptimizedLinearLayout implements Dar @Override public void onDarkChanged(Rect area, float darkIntensity, int tint) { + if (!isInArea(area, this)) { + return; + } mDarkIntensity = darkIntensity; Drawable d = mWifiIcon.getDrawable(); if (d instanceof NeutralGoodDrawable) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java index b6a11f71f2511..6bc19ea69be72 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java @@ -125,7 +125,14 @@ public class NotificationIconAreaController implements DarkReceiver { } else { mTintArea.set(tintArea); } - mIconTint = iconTint; + if (mNotificationIconArea != null) { + if (DarkIconDispatcher.isInArea(tintArea, mNotificationIconArea)) { + mIconTint = iconTint; + } + } else { + mIconTint = iconTint; + } + applyNotificationIconsTint(); }