Fix TaskbarBackgroundRenderer not being applied correctly in 2 cases
- Rename isInAppAndNotStashed to areTaskbarIconsVisibleAndNotStashing,
and check taskbarViewController.areIconsVisible() accordingly. This
effectively handles the same as before, but also handles Overview,
which is not inApp but does have areIconsVisible()
- This fixes bubble scrim over overview taskbar, as well as showing
taskbar background behind assistant in 3 button mode.
- Also fix nav bar button dark density changing when applying the
separate background for assistant
Test: Open bubble and invoke assistant in overview, over IME, inside
an app, over home
Fixes: 266715337
Change-Id: Ie655de7abd1634e2165543d57664d7c7e054a986
This commit is contained in:
@@ -60,6 +60,7 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa
|
||||
private AnimatedFloat mNavButtonDarkIntensityMultiplier;
|
||||
|
||||
private float mLastSetBackgroundAlpha;
|
||||
private boolean mIsBackgroundDrawnElsewhere;
|
||||
|
||||
public TaskbarDragLayerController(TaskbarActivityContext activity,
|
||||
TaskbarDragLayer taskbarDragLayer) {
|
||||
@@ -168,9 +169,23 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa
|
||||
mTaskbarDragLayer.setCornerRoundness(cornerRoundness);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set if another controller is temporarily handling background drawing. In this case we:
|
||||
* - Override our background alpha to be 0.
|
||||
* - Keep the nav bar dark intensity assuming taskbar background is at full alpha.
|
||||
*/
|
||||
public void setIsBackgroundDrawnElsewhere(boolean isBackgroundDrawnElsewhere) {
|
||||
mIsBackgroundDrawnElsewhere = isBackgroundDrawnElsewhere;
|
||||
mBgOverride.updateValue(mIsBackgroundDrawnElsewhere ? 0 : 1);
|
||||
updateNavBarDarkIntensityMultiplier();
|
||||
}
|
||||
|
||||
private void updateNavBarDarkIntensityMultiplier() {
|
||||
// Zero out the app-requested dark intensity when we're drawing our own background.
|
||||
float effectiveBgAlpha = mLastSetBackgroundAlpha * (1 - mBgOffset.value);
|
||||
if (mIsBackgroundDrawnElsewhere) {
|
||||
effectiveBgAlpha = 1;
|
||||
}
|
||||
mNavButtonDarkIntensityMultiplier.updateValue(1 - effectiveBgAlpha);
|
||||
}
|
||||
|
||||
|
||||
@@ -67,7 +67,8 @@ public class TaskbarScrimViewController implements TaskbarControllers.LoggableTa
|
||||
final boolean manageMenuExpanded =
|
||||
(stateFlags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0;
|
||||
final boolean showScrim = !mControllers.navbarButtonsViewController.isImeVisible()
|
||||
&& bubblesExpanded && mControllers.taskbarStashController.isInAppAndNotStashed();
|
||||
&& bubblesExpanded
|
||||
&& mControllers.taskbarStashController.isTaskbarVisibleAndNotStashing();
|
||||
final float scrimAlpha = manageMenuExpanded
|
||||
// When manage menu shows there's the first scrim and second scrim so figure out
|
||||
// what the total transparency would be.
|
||||
|
||||
@@ -349,10 +349,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
|
||||
|
||||
/**
|
||||
* Returns whether the taskbar is currently visible and in an app.
|
||||
* Returns whether the taskbar is currently visible and not in the process of being stashed.
|
||||
*/
|
||||
public boolean isInAppAndNotStashed() {
|
||||
return !mIsStashed && isInApp();
|
||||
public boolean isTaskbarVisibleAndNotStashing() {
|
||||
return !mIsStashed && mControllers.taskbarViewController.areIconsVisible();
|
||||
}
|
||||
|
||||
public boolean isInApp() {
|
||||
|
||||
@@ -113,7 +113,7 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable
|
||||
return;
|
||||
}
|
||||
reset();
|
||||
if (mControllers.taskbarStashController.isInAppAndNotStashed()) {
|
||||
if (mControllers.taskbarStashController.isTaskbarVisibleAndNotStashing()) {
|
||||
mControllers.taskbarEduTooltipController.maybeShowFeaturesEdu();
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -34,10 +34,7 @@ class VoiceInteractionWindowController(val context: TaskbarActivityContext) :
|
||||
|
||||
override fun draw(canvas: Canvas) {
|
||||
super.draw(canvas)
|
||||
if (
|
||||
this@VoiceInteractionWindowController.context.isGestureNav &&
|
||||
controllers.taskbarStashController.isInAppAndNotStashed
|
||||
) {
|
||||
if (controllers.taskbarStashController.isTaskbarVisibleAndNotStashing) {
|
||||
taskbarBackgroundRenderer.draw(canvas)
|
||||
}
|
||||
}
|
||||
@@ -92,8 +89,6 @@ class VoiceInteractionWindowController(val context: TaskbarActivityContext) :
|
||||
* Removes the temporary window and show the TaskbarDragLayer background again.
|
||||
*/
|
||||
private fun moveTaskbarBackgroundToAppropriateLayer(skipAnim: Boolean) {
|
||||
val taskbarBackgroundOverride =
|
||||
controllers.taskbarDragLayerController.overrideBackgroundAlpha
|
||||
val moveToLowerLayer = isVoiceInteractionWindowVisible
|
||||
val onWindowsSynchronized =
|
||||
if (moveToLowerLayer) {
|
||||
@@ -102,10 +97,10 @@ class VoiceInteractionWindowController(val context: TaskbarActivityContext) :
|
||||
separateWindowForTaskbarBackground,
|
||||
separateWindowLayoutParams
|
||||
);
|
||||
{ taskbarBackgroundOverride.updateValue(0f) }
|
||||
{ controllers.taskbarDragLayerController.setIsBackgroundDrawnElsewhere(true) }
|
||||
} else {
|
||||
// First reapply the original taskbar background, then remove the temporary window.
|
||||
taskbarBackgroundOverride.updateValue(1f);
|
||||
controllers.taskbarDragLayerController.setIsBackgroundDrawnElsewhere(false);
|
||||
{ context.removeWindowView(separateWindowForTaskbarBackground) }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user