1
0
Fork 0

For #12992 - Hide tab close button while in multiselect mode

master
ekager 2020-07-27 15:01:42 -04:00 committed by Jeff Boek
parent 12e68ac18d
commit 33bb86b1aa
2 changed files with 25 additions and 12 deletions

View File

@ -104,5 +104,6 @@ class FenixTabsAdapter(
mode is TabTrayDialogFragmentState.Mode.MultiSelect && selectedItems.contains(tab) mode is TabTrayDialogFragmentState.Mode.MultiSelect && selectedItems.contains(tab)
view.checkmark.isVisible = shouldBeChecked view.checkmark.isVisible = shouldBeChecked
view.selected_mask.isVisible = shouldBeChecked view.selected_mask.isVisible = shouldBeChecked
view.mozac_browser_tabstray_close.isVisible = mode is TabTrayDialogFragmentState.Mode.Normal
} }
} }

View File

@ -30,6 +30,7 @@ import kotlinx.coroutines.launch
import mozilla.components.browser.menu.BrowserMenu import mozilla.components.browser.menu.BrowserMenu
import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.BrowserMenuBuilder
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem 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.normalTabs
import mozilla.components.browser.state.selector.privateTabs import mozilla.components.browser.state.selector.privateTabs
import mozilla.components.browser.state.state.BrowserState import mozilla.components.browser.state.state.BrowserState
@ -248,12 +249,15 @@ class TabTrayView(
fun updateState(state: TabTrayDialogFragmentState) { fun updateState(state: TabTrayDialogFragmentState) {
val oldMode = mode val oldMode = mode
if (oldMode::class != state.mode::class && view.context.settings().accessibilityServicesEnabled) { if (oldMode::class != state.mode::class) {
view.announceForAccessibility( updateTabsForModeChanged()
if (state.mode == TabTrayDialogFragmentState.Mode.Normal) view.context.getString( if (view.context.settings().accessibilityServicesEnabled) {
R.string.tab_tray_exit_multiselect_content_description view.announceForAccessibility(
) else view.context.getString(R.string.tab_tray_enter_multiselect_content_description) 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 mode = state.mode
@ -275,7 +279,7 @@ class TabTrayView(
fabView.new_tab_button.isVisible = false fabView.new_tab_button.isVisible = false
view.tab_tray_new_tab.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( view.multiselect_title.text = view.context.getString(
R.string.tab_tray_multi_select_title, R.string.tab_tray_multi_select_title,
@ -391,13 +395,21 @@ class TabTrayView(
view.tab_layout.isVisible = !multiselect 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) { private fun updateTabsForSelectionChanged(itemId: String) {
view.tabsTray.apply { view.tabsTray.apply {
val tabs = if (isPrivateModeSelected) { val tabs = view.context.components.core.store.state.getNormalOrPrivateTabs(
view.context.components.core.store.state.privateTabs isPrivateModeSelected
} else { )
view.context.components.core.store.state.normalTabs
}
val selectedBrowserTabIndex = tabs.indexOfFirst { it.id == itemId } val selectedBrowserTabIndex = tabs.indexOfFirst { it.id == itemId }