[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
This commit is contained in:
@@ -63,17 +63,14 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
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 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
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 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
}
|
||||
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 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
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
|
||||
|
||||
+2
-2
@@ -68,7 +68,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
)
|
||||
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 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
|
||||
@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
|
||||
|
||||
Reference in New Issue
Block a user