|  | @@ -5,23 +5,15 @@ import android.os.Parcel
 | 
	
		
			
				|  |  |  import android.os.Parcelable
 | 
	
		
			
				|  |  |  import android.util.AttributeSet
 | 
	
		
			
				|  |  |  import android.view.View
 | 
	
		
			
				|  |  | -import android.view.ViewGroup
 | 
	
		
			
				|  |  |  import androidx.coordinatorlayout.R
 | 
	
		
			
				|  |  |  import androidx.coordinatorlayout.widget.CoordinatorLayout
 | 
	
		
			
				|  |  |  import androidx.core.view.doOnLayout
 | 
	
		
			
				|  |  | +import androidx.core.view.isVisible
 | 
	
		
			
				|  |  |  import androidx.customview.view.AbsSavedState
 | 
	
		
			
				|  |  | -import androidx.lifecycle.coroutineScope
 | 
	
		
			
				|  |  | -import androidx.lifecycle.findViewTreeLifecycleOwner
 | 
	
		
			
				|  |  | -import androidx.viewpager.widget.ViewPager
 | 
	
		
			
				|  |  | -import com.bluelinelabs.conductor.ChangeHandlerFrameLayout
 | 
	
		
			
				|  |  |  import com.google.android.material.appbar.AppBarLayout
 | 
	
		
			
				|  |  | +import com.google.android.material.tabs.TabLayout
 | 
	
		
			
				|  |  |  import eu.kanade.tachiyomi.util.system.isTablet
 | 
	
		
			
				|  |  |  import eu.kanade.tachiyomi.util.view.findChild
 | 
	
		
			
				|  |  | -import eu.kanade.tachiyomi.util.view.findDescendant
 | 
	
		
			
				|  |  | -import kotlinx.coroutines.flow.launchIn
 | 
	
		
			
				|  |  | -import kotlinx.coroutines.flow.onEach
 | 
	
		
			
				|  |  | -import reactivecircus.flowbinding.android.view.HierarchyChangeEvent
 | 
	
		
			
				|  |  | -import reactivecircus.flowbinding.android.view.hierarchyChangeEvents
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * [CoordinatorLayout] with its own app bar lift state handler.
 | 
	
	
		
			
				|  | @@ -33,8 +25,6 @@ import reactivecircus.flowbinding.android.view.hierarchyChangeEvents
 | 
	
		
			
				|  |  |   * With those conditions, this view expects the following direct child:
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * 1. An [AppBarLayout].
 | 
	
		
			
				|  |  | - *
 | 
	
		
			
				|  |  | - * 2. A [ChangeHandlerFrameLayout] that contains an optional [ViewPager].
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  class TachiyomiCoordinatorLayout @JvmOverloads constructor(
 | 
	
		
			
				|  |  |      context: Context,
 | 
	
	
		
			
				|  | @@ -48,7 +38,7 @@ class TachiyomiCoordinatorLayout @JvmOverloads constructor(
 | 
	
		
			
				|  |  |      private val isTablet = context.isTablet()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private var appBarLayout: AppBarLayout? = null
 | 
	
		
			
				|  |  | -    private var viewPager: ViewPager? = null
 | 
	
		
			
				|  |  | +    private var tabLayout: TabLayout? = null
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * If true, [AppBarLayout] child will be lifted on nested scroll.
 | 
	
	
		
			
				|  | @@ -72,32 +62,21 @@ class TachiyomiCoordinatorLayout @JvmOverloads constructor(
 | 
	
		
			
				|  |  |      ) {
 | 
	
		
			
				|  |  |          super.onNestedScroll(target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, type, consumed)
 | 
	
		
			
				|  |  |          // Disable elevation overlay when tabs are visible
 | 
	
		
			
				|  |  | -        if (canLiftAppBarOnScroll && viewPager == null) {
 | 
	
		
			
				|  |  | -            appBarLayout?.isLifted = dyConsumed != 0 || dyUnconsumed >= 0
 | 
	
		
			
				|  |  | +        if (canLiftAppBarOnScroll) {
 | 
	
		
			
				|  |  | +            appBarLayout?.isLifted = (dyConsumed != 0 || dyUnconsumed >= 0) && tabLayout?.isVisible == false
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      override fun onAttachedToWindow() {
 | 
	
		
			
				|  |  |          super.onAttachedToWindow()
 | 
	
		
			
				|  |  |          appBarLayout = findChild()
 | 
	
		
			
				|  |  | -        viewPager = findChild<ChangeHandlerFrameLayout>()?.findDescendant()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // Updates ViewPager reference when controller is changed
 | 
	
		
			
				|  |  | -        findViewTreeLifecycleOwner()?.lifecycle?.coroutineScope?.let { scope ->
 | 
	
		
			
				|  |  | -            findChild<ChangeHandlerFrameLayout>()?.hierarchyChangeEvents()
 | 
	
		
			
				|  |  | -                ?.onEach {
 | 
	
		
			
				|  |  | -                    if (it is HierarchyChangeEvent.ChildRemoved) {
 | 
	
		
			
				|  |  | -                        viewPager = (it.parent as? ViewGroup)?.findDescendant()
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                ?.launchIn(scope)
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        tabLayout = appBarLayout?.findChild()
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      override fun onDetachedFromWindow() {
 | 
	
		
			
				|  |  |          super.onDetachedFromWindow()
 | 
	
		
			
				|  |  |          appBarLayout = null
 | 
	
		
			
				|  |  | -        viewPager = null
 | 
	
		
			
				|  |  | +        tabLayout = null
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      override fun onSaveInstanceState(): Parcelable? {
 |