diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/FenixTabsAdapter.kt b/app/src/main/java/org/mozilla/fenix/tabtray/FenixTabsAdapter.kt index 76e85669f..ebea8e3ed 100644 --- a/app/src/main/java/org/mozilla/fenix/tabtray/FenixTabsAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/tabtray/FenixTabsAdapter.kt @@ -104,5 +104,6 @@ class FenixTabsAdapter( mode is TabTrayDialogFragmentState.Mode.MultiSelect && selectedItems.contains(tab) view.checkmark.isVisible = shouldBeChecked view.selected_mask.isVisible = shouldBeChecked + view.mozac_browser_tabstray_close.isVisible = mode is TabTrayDialogFragmentState.Mode.Normal } } diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayView.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayView.kt index b580a239f..ee5d13bef 100644 --- a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayView.kt +++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayView.kt @@ -30,6 +30,7 @@ import kotlinx.coroutines.launch import mozilla.components.browser.menu.BrowserMenu import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.item.SimpleBrowserMenuItem +import mozilla.components.browser.state.selector.getNormalOrPrivateTabs import mozilla.components.browser.state.selector.normalTabs import mozilla.components.browser.state.selector.privateTabs import mozilla.components.browser.state.state.BrowserState @@ -248,12 +249,15 @@ class TabTrayView( fun updateState(state: TabTrayDialogFragmentState) { val oldMode = mode - if (oldMode::class != state.mode::class && view.context.settings().accessibilityServicesEnabled) { - view.announceForAccessibility( - if (state.mode == TabTrayDialogFragmentState.Mode.Normal) view.context.getString( - R.string.tab_tray_exit_multiselect_content_description - ) else view.context.getString(R.string.tab_tray_enter_multiselect_content_description) - ) + if (oldMode::class != state.mode::class) { + updateTabsForModeChanged() + if (view.context.settings().accessibilityServicesEnabled) { + view.announceForAccessibility( + if (state.mode == TabTrayDialogFragmentState.Mode.Normal) view.context.getString( + R.string.tab_tray_exit_multiselect_content_description + ) else view.context.getString(R.string.tab_tray_enter_multiselect_content_description) + ) + } } mode = state.mode @@ -275,7 +279,7 @@ class TabTrayView( fabView.new_tab_button.isVisible = false view.tab_tray_new_tab.isVisible = false - view.collect_multi_select.isVisible = state.mode.selectedItems.size > 0 + view.collect_multi_select.isVisible = state.mode.selectedItems.isNotEmpty() view.multiselect_title.text = view.context.getString( R.string.tab_tray_multi_select_title, @@ -391,13 +395,21 @@ class TabTrayView( view.tab_layout.isVisible = !multiselect } + private fun updateTabsForModeChanged() { + view.tabsTray.apply { + val tabs = view.context.components.core.store.state.getNormalOrPrivateTabs( + isPrivateModeSelected + ) + + this.adapter?.notifyItemRangeChanged(0, tabs.size, true) + } + } + private fun updateTabsForSelectionChanged(itemId: String) { view.tabsTray.apply { - val tabs = if (isPrivateModeSelected) { - view.context.components.core.store.state.privateTabs - } else { - view.context.components.core.store.state.normalTabs - } + val tabs = view.context.components.core.store.state.getNormalOrPrivateTabs( + isPrivateModeSelected + ) val selectedBrowserTabIndex = tabs.indexOfFirst { it.id == itemId }