[CD Taskbar] Fix TaskbarDividerView Crash
Fix crash due to taskbarActivityContext being initialized too late.
Flag: EXEMPT not adding new behavior
Bug: 402671805
Test: Manual
Change-Id: I1e6fcbac823dbd436579f1be2558b7855778a44c
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt
index e3e7499..b663444 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt
@@ -63,17 +63,14 @@
false,
) as TaskbarDividerPopupView<*>
- return taskMenuViewWithArrow.populateForView(
- view,
- horizontalPosition,
- taskbarActivityContext,
- )
+ return taskMenuViewWithArrow.populateForView(view, horizontalPosition)
}
}
private lateinit var dividerView: View
private var horizontalPosition = 0.0f
- private lateinit var taskbarActivityContext: TaskbarActivityContext
+ private val taskbarActivityContext: TaskbarActivityContext =
+ ActivityContext.lookupContext(context)
private val popupCornerRadius = Themes.getDialogCornerRadius(context)
private val arrowWidth = resources.getDimension(R.dimen.popup_arrow_width)
@@ -82,6 +79,7 @@
private val minPaddingFromScreenEdge =
resources.getDimension(R.dimen.taskbar_pinning_popup_menu_min_padding_from_screen_edge)
+ // TODO: add test for isTransientTaskbar & long presses divider and ensures the popup shows up.
private var alwaysShowTaskbarOn = !taskbarActivityContext.isTransientTaskbar
private var didPreferenceChange = false
private var verticalOffsetForPopupView =
@@ -117,7 +115,7 @@
}
alwaysShowTaskbarSwitch.setOnClickListener { view -> (view.parent as View).performClick() }
- if (ActivityContext.lookupContext<TaskbarActivityContext>(context).isGestureNav) {
+ if (taskbarActivityContext.isGestureNav) {
taskbarSwitchOption.setOnClickListener {
alwaysShowTaskbarSwitch.isChecked = !alwaysShowTaskbarOn
onClickAlwaysShowTaskbarSwitchOption()
@@ -179,13 +177,8 @@
return false
}
- private fun populateForView(
- view: View,
- horizontalPosition: Float,
- taskbar: TaskbarActivityContext,
- ): TaskbarDividerPopupView<*> {
+ private fun populateForView(view: View, horizontalPosition: Float): TaskbarDividerPopupView<*> {
dividerView = view
- taskbarActivityContext = taskbar
this@TaskbarDividerPopupView.horizontalPosition = horizontalPosition
tryUpdateBackground()
return this
diff --git a/quickstep/src/com/android/launcher3/taskbar/customization/TaskbarAllAppsButtonContainer.kt b/quickstep/src/com/android/launcher3/taskbar/customization/TaskbarAllAppsButtonContainer.kt
index 82b1295..bb2acd6 100644
--- a/quickstep/src/com/android/launcher3/taskbar/customization/TaskbarAllAppsButtonContainer.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/customization/TaskbarAllAppsButtonContainer.kt
@@ -68,7 +68,7 @@
)
backgroundTintList = ColorStateList.valueOf(TRANSPARENT)
setIconDrawable(drawable)
- if (activityContext.isTransientTaskbar) {
+ if (!activityContext.isTransientTaskbar) {
setPadding(dpToPx(activityContext.taskbarSpecsEvaluator.taskbarIconPadding.toFloat()))
}
setForegroundTint(activityContext.getColor(R.color.all_apps_button_color))
@@ -105,7 +105,7 @@
@DimenRes
fun getAllAppsButtonTranslationXOffset(isTransientTaskbar: Boolean): Int {
- return if (isTransientTaskbar && activityContext.isTransientTaskbar) {
+ return if (isTransientTaskbar) {
R.dimen.transient_taskbar_all_apps_button_translation_x_offset
} else {
R.dimen.taskbar_all_apps_search_button_translation_x_offset