@ -218,6 +218,8 @@ class TabTrayView(
// Put the 'Add to collections' button after the tabs have loaded.
// Put the 'Add to collections' button after the tabs have loaded.
// And, put the Synced Tabs adapter at the end.
// And, put the Synced Tabs adapter at the end.
if ( reverseTabOrderInTabsTray ) {
if ( reverseTabOrderInTabsTray ) {
// Put these at the start when reverse tab order is enabled. Also, we disallow
// reverse tab order for compact tabs in settings.
concatAdapter . addAdapter ( 0 , collectionsButtonAdapter )
concatAdapter . addAdapter ( 0 , collectionsButtonAdapter )
concatAdapter . addAdapter ( 0 , syncedTabsController . adapter )
concatAdapter . addAdapter ( 0 , syncedTabsController . adapter )
} else {
} else {
@ -330,33 +332,16 @@ class TabTrayView(
if ( enableCompactTabs ) {
if ( enableCompactTabs ) {
val gridLayoutManager = GridLayoutManager ( container . context , gridViewNumberOfCols ( container . context ) )
val gridLayoutManager = GridLayoutManager ( container . context , gridViewNumberOfCols ( container . context ) )
if ( useTopTabsTray ) {
if ( useTopTabsTray ) {
if ( ! reverseTabOrderInTabsTray ) {
gridLayoutManager . reverseLayout = true
gridLayoutManager . reverseLayout = true
}
}
} else {
if ( reverseTabOrderInTabsTray ) {
gridLayoutManager . reverseLayout = true
}
}
gridLayoutManager . spanSizeLookup = object : GridLayoutManager . SpanSizeLookup ( ) {
gridLayoutManager . spanSizeLookup = object : GridLayoutManager . SpanSizeLookup ( ) {
override fun getSpanSize ( position : Int ) : Int {
override fun getSpanSize ( position : Int ) : Int {
val numTabs = tabsAdapter . itemCount
val numTabs = tabsAdapter . itemCount
val totalItems = numTabs + collectionsButtonAdapter . itemCount +
return if ( position < numTabs ) {
syncedTabsController . adapter . itemCount
return if ( reverseTabOrderInTabsTray ) {
if ( totalItems - 1 - position < numTabs ) {
1
1
} else {
} else {
gridViewNumberOfCols ( container . context )
gridViewNumberOfCols ( container . context )
}
}
} else {
if ( position < numTabs ) {
1
} else {
gridViewNumberOfCols ( container . context )
}
}
}
}
}
}
@ -664,18 +649,12 @@ class TabTrayView(
val selectedBrowserTabIndex = tabs
val selectedBrowserTabIndex = tabs
. indexOfFirst { it . id == sessionId }
. indexOfFirst { it . id == sessionId }
val recyclerViewIndex = if ( reverseTabOrderInTabsTray && ! enableCompactTabs ) {
val recyclerViewIndex = if ( reverseTabOrderInTabsTray ) {
// For reverse tab order and non-compact tabs, we add the items in collections button
// For reverse tab order and non-compact tabs, we add the items in collections button
// adapter and synced tabs adapter, and offset by 1 to show the tab above the
// adapter and synced tabs adapter, and offset by 1 to show the tab above the
// current tab, unless current tab is first in reverse order.
// current tab, unless current tab is first in reverse order.
min ( selectedBrowserTabIndex + 1 , tabsAdapter . itemCount - 1 ) +
min ( selectedBrowserTabIndex + 1 , tabsAdapter . itemCount - 1 ) +
collectionsButtonAdapter . itemCount + syncedTabsController . adapter . itemCount
collectionsButtonAdapter . itemCount + syncedTabsController . adapter . itemCount
} else if ( reverseTabOrderInTabsTray && enableCompactTabs ) {
// For reverse tab order and compact tabs, we add the items in collections button
// adapter and synced tabs adapter, and offset by -1 to show the tab above the
// current tab, unless current tab is first in reverse order.
max ( 0 , selectedBrowserTabIndex - 1 + collectionsButtonAdapter . itemCount +
syncedTabsController . adapter . itemCount )
} else {
} else {
// We offset index by -1 to show the tab above the current tab, unless current tab
// We offset index by -1 to show the tab above the current tab, unless current tab
// is the first.
// is the first.