diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index c6dbcbbef..76c76dd63 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -34,9 +34,9 @@ import org.oxycblt.auxio.playback.system.PlaybackService import org.oxycblt.auxio.settings.SettingsManager import org.oxycblt.auxio.ui.accent.Accent import org.oxycblt.auxio.util.getColorSafe +import org.oxycblt.auxio.util.getSystemBarInsetsCompat import org.oxycblt.auxio.util.isNight import org.oxycblt.auxio.util.logD -import org.oxycblt.auxio.util.systemBarInsetsCompat /** * The single [AppCompatActivity] for Auxio. @@ -148,7 +148,7 @@ class MainActivity : AppCompatActivity() { } contentView.setOnApplyWindowInsetsListener { view, insets -> - val bars = insets.systemBarInsetsCompat + val bars = insets.getSystemBarInsetsCompat(view) view.updatePadding(left = bars.left, right = bars.right) insets } diff --git a/app/src/main/java/org/oxycblt/auxio/home/EdgeFabContainer.kt b/app/src/main/java/org/oxycblt/auxio/home/EdgeFabContainer.kt index 6cd476431..5dcde3068 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/EdgeFabContainer.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/EdgeFabContainer.kt @@ -23,7 +23,7 @@ import android.view.WindowInsets import android.widget.FrameLayout import androidx.annotation.AttrRes import androidx.core.view.updatePadding -import org.oxycblt.auxio.util.systemBarInsetsCompat +import org.oxycblt.auxio.util.getSystemBarInsetsCompat /** * A container for a FloatingActionButton that enables edge-to-edge support. @@ -42,7 +42,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr } override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets { - updatePadding(bottom = insets.systemBarInsetsCompat.bottom) + updatePadding(bottom = insets.getSystemBarInsetsCompat(this).bottom) return insets } } diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt index 7b54a9407..ab9e17810 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -56,12 +56,12 @@ import org.oxycblt.auxio.ui.MainNavigationAction import org.oxycblt.auxio.ui.NavigationViewModel import org.oxycblt.auxio.ui.ViewBindingFragment import org.oxycblt.auxio.util.getColorStateListSafe +import org.oxycblt.auxio.util.getSystemBarInsetsCompat import org.oxycblt.auxio.util.launch import org.oxycblt.auxio.util.logD import org.oxycblt.auxio.util.logE import org.oxycblt.auxio.util.logTraceOrThrow import org.oxycblt.auxio.util.logW -import org.oxycblt.auxio.util.systemBarInsetsCompat import org.oxycblt.auxio.util.textSafe import org.oxycblt.auxio.util.unlikelyToBeNull @@ -108,7 +108,7 @@ class HomeFragment : ViewBindingFragment(), Toolbar.OnMenuI updateTabConfiguration() binding.homeIndexingContainer.setOnApplyWindowInsetsListener { view, insets -> - view.updatePadding(bottom = insets.systemBarInsetsCompat.bottom) + view.updatePadding(bottom = insets.getSystemBarInsetsCompat(view).bottom) insets } diff --git a/app/src/main/java/org/oxycblt/auxio/home/fastscroll/FastScrollRecyclerView.kt b/app/src/main/java/org/oxycblt/auxio/home/fastscroll/FastScrollRecyclerView.kt index 1effcfb58..ad0614cbd 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/fastscroll/FastScrollRecyclerView.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/fastscroll/FastScrollRecyclerView.kt @@ -40,9 +40,9 @@ import org.oxycblt.auxio.util.clamp import org.oxycblt.auxio.util.getDimenOffsetSafe import org.oxycblt.auxio.util.getDimenSizeSafe import org.oxycblt.auxio.util.getDrawableSafe +import org.oxycblt.auxio.util.getSystemBarInsetsCompat import org.oxycblt.auxio.util.isRtl import org.oxycblt.auxio.util.isUnder -import org.oxycblt.auxio.util.systemBarInsetsCompat /** * A [RecyclerView] that enables better fast-scrolling. This is fundamentally a implementation of @@ -283,7 +283,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets { super.onApplyWindowInsets(insets) - val bars = insets.systemBarInsetsCompat + val bars = insets.getSystemBarInsetsCompat(this) thumbPadding.bottom = bars.bottom return insets } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt index 363bb235e..9f38e75bc 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt @@ -29,9 +29,9 @@ import org.oxycblt.auxio.ui.MainNavigationAction import org.oxycblt.auxio.ui.NavigationViewModel import org.oxycblt.auxio.ui.ViewBindingFragment import org.oxycblt.auxio.util.getColorStateListSafe +import org.oxycblt.auxio.util.getSystemBarInsetsCompat +import org.oxycblt.auxio.util.getSystemGestureInsetsCompat import org.oxycblt.auxio.util.launch -import org.oxycblt.auxio.util.systemBarInsetsCompat -import org.oxycblt.auxio.util.systemGestureInsetsCompat import org.oxycblt.auxio.util.textSafe /** @@ -63,8 +63,8 @@ class PlaybackBarFragment : ViewBindingFragment() { // any gesture events. So, apply the system gesture insets if present as long // as they are *larger* than the bar insets. This is to resolve issues where // the gesture insets are not sane on OEM devices. - val bars = insets.systemBarInsetsCompat - val gestures = insets.systemGestureInsetsCompat + val bars = insets.getSystemBarInsetsCompat(view) + val gestures = insets.getSystemGestureInsetsCompat(view) view.updatePadding(bottom = max(bars.bottom, gestures.bottom)) insets } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt index 59c8ea032..b87223f93 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt @@ -32,9 +32,9 @@ import org.oxycblt.auxio.playback.state.RepeatMode import org.oxycblt.auxio.ui.MainNavigationAction import org.oxycblt.auxio.ui.NavigationViewModel import org.oxycblt.auxio.ui.ViewBindingFragment +import org.oxycblt.auxio.util.getSystemBarInsetsCompat import org.oxycblt.auxio.util.launch import org.oxycblt.auxio.util.logD -import org.oxycblt.auxio.util.systemBarInsetsCompat import org.oxycblt.auxio.util.textSafe /** @@ -64,9 +64,9 @@ class PlaybackPanelFragment : ) { // --- UI SETUP --- - binding.root.setOnApplyWindowInsetsListener { _, insets -> - val bars = insets.systemBarInsetsCompat - binding.root.updatePadding(top = bars.top, bottom = bars.bottom) + binding.root.setOnApplyWindowInsetsListener { view, insets -> + val bars = insets.getSystemBarInsetsCompat(view) + view.updatePadding(top = bars.top, bottom = bars.bottom) insets } diff --git a/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt index 163a42518..11db91c56 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt @@ -38,10 +38,10 @@ import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.ui.ViewBindingFragment import org.oxycblt.auxio.util.formatDuration +import org.oxycblt.auxio.util.getSystemBarInsetsCompat import org.oxycblt.auxio.util.launch import org.oxycblt.auxio.util.logD import org.oxycblt.auxio.util.showToast -import org.oxycblt.auxio.util.systemBarInsetsCompat import org.oxycblt.auxio.util.textSafe /** @@ -55,7 +55,7 @@ class AboutFragment : ViewBindingFragment() { override fun onBindingCreated(binding: FragmentAboutBinding, savedInstanceState: Bundle?) { binding.aboutContents.setOnApplyWindowInsetsListener { view, insets -> - view.updatePadding(bottom = insets.systemBarInsetsCompat.bottom) + view.updatePadding(bottom = insets.getSystemBarInsetsCompat(view).bottom) insets } diff --git a/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt index 234e7bae4..cc295f0fe 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt @@ -38,11 +38,11 @@ import org.oxycblt.auxio.playback.replaygain.ReplayGainMode import org.oxycblt.auxio.settings.pref.IntListPreference import org.oxycblt.auxio.settings.pref.IntListPreferenceDialog import org.oxycblt.auxio.ui.accent.AccentDialog +import org.oxycblt.auxio.util.getSystemBarInsetsCompat import org.oxycblt.auxio.util.hardRestart import org.oxycblt.auxio.util.isNight import org.oxycblt.auxio.util.logD import org.oxycblt.auxio.util.showToast -import org.oxycblt.auxio.util.systemBarInsetsCompat /** * The actual fragment containing the settings menu. Inherits [PreferenceFragmentCompat]. @@ -68,7 +68,7 @@ class SettingsListFragment : PreferenceFragmentCompat() { clipToPadding = false setOnApplyWindowInsetsListener { _, insets -> - updatePadding(bottom = insets.systemBarInsetsCompat.bottom) + updatePadding(bottom = insets.getSystemBarInsetsCompat(this).bottom) insets } } diff --git a/app/src/main/java/org/oxycblt/auxio/ui/BottomSheetLayout.kt b/app/src/main/java/org/oxycblt/auxio/ui/BottomSheetLayout.kt index bbb2d9f2f..28ac4bbc0 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/BottomSheetLayout.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/BottomSheetLayout.kt @@ -43,12 +43,12 @@ import org.oxycblt.auxio.util.disableDropShadowCompat import org.oxycblt.auxio.util.getAttrColorSafe import org.oxycblt.auxio.util.getDimenSafe import org.oxycblt.auxio.util.getDrawableSafe +import org.oxycblt.auxio.util.getSystemBarInsetsCompat import org.oxycblt.auxio.util.isUnder import org.oxycblt.auxio.util.logD import org.oxycblt.auxio.util.pxOfDp import org.oxycblt.auxio.util.replaceSystemBarInsetsCompat import org.oxycblt.auxio.util.stateList -import org.oxycblt.auxio.util.systemBarInsetsCompat /** * A layout that *properly* handles bottom sheet functionality. @@ -383,7 +383,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) : // not apply any window insets at all, which results in scroll desynchronization on // certain views. This is considered tolerable as the other options are to convert // the playback fragments to views, which is not nice. - val bars = insets.systemBarInsetsCompat + val bars = insets.getSystemBarInsetsCompat(this) val consumedByPanel = computePanelTopPosition(panelOffset) - measuredHeight val adjustedBottomInset = (consumedByPanel + bars.bottom).coerceAtLeast(0) return insets.replaceSystemBarInsetsCompat( @@ -539,7 +539,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) : // and we can't apply padding to the whole container layout since that would adjust // the size of the panel view. This seems to be the least obtrusive way to do this. lastInsets?.let { insets -> - val bars = insets.systemBarInsetsCompat + val bars = insets.getSystemBarInsetsCompat(this) val params = layoutParams as MarginLayoutParams val oldTopMargin = params.topMargin diff --git a/app/src/main/java/org/oxycblt/auxio/ui/EdgeAppBarLayout.kt b/app/src/main/java/org/oxycblt/auxio/ui/EdgeAppBarLayout.kt index f7dbe0a0c..3bf10f320 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/EdgeAppBarLayout.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/EdgeAppBarLayout.kt @@ -28,8 +28,8 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.content.res.ResourcesCompat import androidx.core.view.updatePadding import com.google.android.material.appbar.AppBarLayout +import org.oxycblt.auxio.util.getSystemBarInsetsCompat import org.oxycblt.auxio.util.logW -import org.oxycblt.auxio.util.systemBarInsetsCompat /** * An [AppBarLayout] that fixes a bug with the default implementation where the lifted state will @@ -64,7 +64,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets { super.onApplyWindowInsets(insets) - updatePadding(top = insets.systemBarInsetsCompat.top) + updatePadding(top = insets.getSystemBarInsetsCompat(this).top) return insets } diff --git a/app/src/main/java/org/oxycblt/auxio/ui/EdgeRecyclerView.kt b/app/src/main/java/org/oxycblt/auxio/ui/EdgeRecyclerView.kt index 4a135b7b8..296ffaefb 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/EdgeRecyclerView.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/EdgeRecyclerView.kt @@ -24,7 +24,7 @@ import android.view.WindowInsets import androidx.annotation.AttrRes import androidx.core.view.updatePadding import androidx.recyclerview.widget.RecyclerView -import org.oxycblt.auxio.util.systemBarInsetsCompat +import org.oxycblt.auxio.util.getSystemBarInsetsCompat /** A [RecyclerView] that automatically applies insets to itself. */ open class EdgeRecyclerView @@ -48,7 +48,7 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr initialPadding.left, initialPadding.top, initialPadding.right, - initialPadding.bottom + insets.systemBarInsetsCompat.bottom) + initialPadding.bottom + insets.getSystemBarInsetsCompat(this).bottom) return insets } diff --git a/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt b/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt index 9f59c7d9f..a73b549c4 100644 --- a/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt @@ -191,19 +191,17 @@ fun SQLiteDatabase.queryAll(tableName: String, block: (Cursor) -> R) = * Resolve system bar insets in a version-aware manner. This can be used to apply padding to a view * that properly follows all the frustrating changes that were made between Android 8-11. */ -val WindowInsets.systemBarInsetsCompat: Insets - get() = - WindowInsetsCompat.toWindowInsetsCompat(this) - .getInsets(WindowInsetsCompat.Type.systemBars()) +fun WindowInsets.getSystemBarInsetsCompat(view: View) = + WindowInsetsCompat.toWindowInsetsCompat(this, view) + .getInsets(WindowInsetsCompat.Type.systemBars()) /** * Resolve gesture insets in a version-aware manner. This can be used to apply padding to a view * that properly follows all the frustrating changes that were made between Android 8-11. */ -val WindowInsets.systemGestureInsetsCompat: Insets - get() = - WindowInsetsCompat.toWindowInsetsCompat(this) - .getInsets(WindowInsetsCompat.Type.systemGestures()) +fun WindowInsets.getSystemGestureInsetsCompat(view: View) = + WindowInsetsCompat.toWindowInsetsCompat(this, view) + .getInsets(WindowInsetsCompat.Type.systemGestures()) /** * Replaces the system bar insets in a version-aware manner. This can be used to modify the insets