From 5fc343d973a568658bd786aeb3e0507c9182ed46 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sat, 6 Aug 2022 09:56:11 +0200 Subject: [PATCH] workaround infinite loop in onApplyWindowInsets when using Mapbox --- .../main/java/net/vonforst/evmap/fragment/MapFragment.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt index 21bbf577..7f589a21 100644 --- a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt +++ b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt @@ -199,7 +199,9 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac setHasOptionsMenu(true) - ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, insets -> + ViewCompat.setOnApplyWindowInsetsListener( + binding.root + ) { v, insets -> ViewCompat.onApplyWindowInsets(binding.root, insets) val systemWindowInsetTop = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top @@ -224,7 +226,9 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac // set map padding so that compass is not obstructed by toolbar mapTopPadding = systemWindowInsetTop + (48 * density).toInt() + (16 * density).toInt() - map?.setPadding(0, mapTopPadding, 0, 0) + // if we actually use map.setPadding here, Mapbox will re-trigger onApplyWindowInsets + // and cause an infinite loop. So we rely on onMapReady being called later than + // onApplyWindowInsets. insets }