[fenix] For https://github.com/mozilla-mobile/fenix/issues/13427 - Disable the "selected tab" decoration when in Multiselect

Selecting a tab while in Multiselect would add a different decoration to the one
already set for the last tab opened and this would confuse users.
Let's avoid this.
pull/600/head
Mugurell 4 years ago committed by Christian Sadilek
parent de8ef956c8
commit ee96af1b9a

@ -59,13 +59,22 @@ class FenixTabsAdapter(
override fun onBindViewHolder( override fun onBindViewHolder(
holder: TabViewHolder, holder: TabViewHolder,
position: Int, position: Int,
payloads: MutableList<Any> payloads: List<Any>
) { ) {
if (payloads.isNullOrEmpty()) { if (payloads.isNullOrEmpty()) {
onBindViewHolder(holder, position) onBindViewHolder(holder, position)
return return
} }
// Having non-empty payloads means we have to make a partial update.
// This currently only happens when changing between the Normal and MultiSelect modes
// when we want to either show the last opened tab as selected (default) or hide this ui decorator.
if (mode is TabTrayDialogFragmentState.Mode.Normal) {
super.onBindViewHolder(holder, position, listOf(PAYLOAD_HIGHLIGHT_SELECTED_ITEM))
} else {
super.onBindViewHolder(holder, position, listOf(PAYLOAD_DONT_HIGHLIGHT_SELECTED_ITEM))
}
holder.tab?.let { showCheckedIfSelected(it, holder.itemView) } holder.tab?.let { showCheckedIfSelected(it, holder.itemView) }
} }
@ -133,6 +142,11 @@ class FenixTabsAdapter(
tabsList = recyclerView tabsList = recyclerView
} }
override fun isTabSelected(tabs: Tabs, position: Int): Boolean {
return mode is TabTrayDialogFragmentState.Mode.Normal &&
tabs.selectedIndex == position
}
private fun showCheckedIfSelected(tab: Tab, view: View) { private fun showCheckedIfSelected(tab: Tab, view: View) {
val shouldBeChecked = val shouldBeChecked =
mode is TabTrayDialogFragmentState.Mode.MultiSelect && selectedItems.contains(tab) mode is TabTrayDialogFragmentState.Mode.MultiSelect && selectedItems.contains(tab)

@ -227,10 +227,9 @@ class TabTrayViewHolder(
.take(MAX_URI_LENGTH) .take(MAX_URI_LENGTH)
} }
@VisibleForTesting override fun updateSelectedTabIndicator(showAsSelected: Boolean) {
internal fun updateSelectedTabIndicator(isSelected: Boolean) {
if (itemView.context.settings().gridTabView) { if (itemView.context.settings().gridTabView) {
itemView.tab_tray_grid_item.background = if (isSelected) { itemView.tab_tray_grid_item.background = if (showAsSelected) {
AppCompatResources.getDrawable(itemView.context, R.drawable.tab_tray_grid_item_selected_border) AppCompatResources.getDrawable(itemView.context, R.drawable.tab_tray_grid_item_selected_border)
} else { } else {
null null
@ -238,7 +237,7 @@ class TabTrayViewHolder(
return return
} }
val color = if (isSelected) { val color = if (showAsSelected) {
R.color.tab_tray_item_selected_background_normal_theme R.color.tab_tray_item_selected_background_normal_theme
} else { } else {
R.color.tab_tray_item_background_normal_theme R.color.tab_tray_item_background_normal_theme

Loading…
Cancel
Save