@ -157,9 +157,6 @@ class TabTrayView(
val tabs = getTabs ( isPrivate )
val selectedBrowserTabIndex = tabs
. indexOfFirst { it . id == view . context . components . core . store . state . selectedTabId }
updateBottomSheetBehavior ( )
setTopOffset ( isInLandscape ( ) )
@ -208,14 +205,14 @@ class TabTrayView(
}
if ( ! hasLoaded ) {
hasLoaded = true
scrollTo Tab( view . context . components . core . store . state . selectedTabId )
scrollTo SelectedBrowserTab( )
if ( view . context . settings ( ) . accessibilityServicesEnabled ) {
lifecycleScope . launch {
delay ( SELECTION_DELAY . toLong ( ) )
lifecycleScope . launch ( Main ) {
layoutManager ?. findViewByPosition ( selectedBrowserTabIndex )
layoutManager ?. findViewByPosition ( getSelectedBrowserTabViewIndex( ) )
?. requestFocus ( )
layoutManager ?. findViewByPosition ( selectedBrowserTabIndex )
layoutManager ?. findViewByPosition ( getSelectedBrowserTabViewIndex( ) )
?. sendAccessibilityEvent (
AccessibilityEvent . TYPE _VIEW _FOCUSED
)
@ -367,7 +364,7 @@ class TabTrayView(
toggleSaveToCollectionButton ( isPrivateModeSelected )
updateUINormalMode ( view . context . components . core . store . state )
scrollTo Tab( view . context . components . core . store . state . selectedTabId )
scrollTo SelectedBrowserTab( )
if ( isPrivateModeSelected ) {
components . analytics . metrics . track ( Event . TabsTrayPrivateModeTapped )
@ -682,22 +679,9 @@ class TabTrayView(
return interactor . onBackPressed ( )
}
fun scrollTo Tab( sessionId : String ? ) {
fun scrollTo SelectedBrowserTab( selectedTabId : String ? = null ) {
view . tabsTray . apply {
val tabs = if ( isPrivateModeSelected ) {
view . context . components . core . store . state . privateTabs
} else {
view . context . components . core . store . state . normalTabs
}
val selectedBrowserTabIndex = tabs
. indexOfFirst { it . id == sessionId }
// We offset the tab index by the number of items in the other adapters.
// We add the offset, because the layoutManager is initialized with `reverseLayout`.
val recyclerViewIndex = selectedBrowserTabIndex +
collectionsButtonAdapter . itemCount +
syncedTabsController . adapter . itemCount
val recyclerViewIndex = getSelectedBrowserTabViewIndex ( selectedTabId )
layoutManager ?. scrollToPosition ( recyclerViewIndex )
smoothScrollBy (
@ -707,6 +691,30 @@ class TabTrayView(
}
}
private fun getSelectedBrowserTabViewIndex ( sessionId : String ? = null ) : Int {
val tabs = if ( isPrivateModeSelected ) {
view . context . components . core . store . state . privateTabs
} else {
view . context . components . core . store . state . normalTabs
}
val selectedBrowserTabIndex = if ( sessionId != null ) {
tabs . indexOfFirst { it . id == sessionId }
} else {
tabs . indexOfFirst { it . id == view . context . components . core . store . state . selectedTabId }
}
// We offset the tab index by the number of items in the other adapters.
// We add the offset, because the layoutManager is initialized with `reverseLayout`.
return if ( view . context . settings ( ) . listTabView ) {
selectedBrowserTabIndex +
collectionsButtonAdapter . itemCount +
syncedTabsController . adapter . itemCount
} else {
selectedBrowserTabIndex
}
}
companion object {
private const val TAB _COUNT _SHOW _CFR = 6
private const val DEFAULT _TAB _ID = 0