From 0ba1048ead93f1bb536fa924eda3465a29c7dcd4 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sat, 8 May 2021 08:29:55 -0600 Subject: [PATCH] Fix problems from plugin update Remove the fixAnimInfoLeak hack since it seems that issue was fixed in the new android plugin, and once again modify with the styles to get the dialogs to use the correct style again. Another day another magic flag I need to fiddle with to get this busted android app working. This platform sucks so much. --- app/build.gradle | 1 - .../java/org/oxycblt/auxio/MainFragment.kt | 7 ------- .../oxycblt/auxio/detail/DetailFragment.kt | 7 ------- .../oxycblt/auxio/library/LibraryFragment.kt | 7 ------- .../oxycblt/auxio/search/SearchFragment.kt | 7 ------- .../org/oxycblt/auxio/songs/SongsFragment.kt | 7 ------- .../org/oxycblt/auxio/ui/InterfaceUtils.kt | 19 ------------------- app/src/main/res/values/styles.xml | 9 ++++----- 8 files changed, 4 insertions(+), 60 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ac26f5996..94d0d6bb7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,6 @@ dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) // Kotlin - // TODO: Move to kotlin 1.5.0 when they actually release it implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index 4b8a50364..9e844c332 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -19,7 +19,6 @@ import org.oxycblt.auxio.detail.DetailViewModel import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.ui.Accent -import org.oxycblt.auxio.ui.fixAnimInfoLeak import org.oxycblt.auxio.ui.isLandscape import org.oxycblt.auxio.ui.isTablet import org.oxycblt.auxio.ui.toColor @@ -107,12 +106,6 @@ class MainFragment : Fragment() { return binding.root } - override fun onDestroyView() { - super.onDestroyView() - - fixAnimInfoLeak() - } - /** * Custom navigator code that has proper animations, unlike BottomNavigationView.setupWithNavController(). */ diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailFragment.kt index cef8ec2e8..53adcdf62 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailFragment.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import org.oxycblt.auxio.databinding.FragmentDetailBinding import org.oxycblt.auxio.playback.PlaybackViewModel -import org.oxycblt.auxio.ui.fixAnimInfoLeak import org.oxycblt.auxio.ui.isLandscape import org.oxycblt.auxio.ui.memberBinding @@ -41,12 +40,6 @@ abstract class DetailFragment : Fragment() { callback.isEnabled = false } - override fun onDestroyView() { - super.onDestroyView() - - fixAnimInfoLeak() - } - /** * Shortcut method for doing setup of the detail toolbar. * @param menu Menu resource to use diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt index c083e2012..dd08cbba3 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt @@ -17,7 +17,6 @@ import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Parent import org.oxycblt.auxio.music.Song -import org.oxycblt.auxio.ui.fixAnimInfoLeak import org.oxycblt.auxio.ui.getSpans import org.oxycblt.auxio.ui.newMenu @@ -96,12 +95,6 @@ class LibraryFragment : Fragment() { libraryModel.setNavigating(false) } - override fun onDestroyView() { - super.onDestroyView() - - fixAnimInfoLeak() - } - /** * Navigate to the detail UI for a [parent]. */ diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt index 6d7e4a90d..dcb60d736 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt @@ -22,7 +22,6 @@ import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Header import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.playback.PlaybackViewModel -import org.oxycblt.auxio.ui.fixAnimInfoLeak import org.oxycblt.auxio.ui.getSpans import org.oxycblt.auxio.ui.newMenu @@ -127,12 +126,6 @@ class SearchFragment : Fragment() { searchModel.setNavigating(false) } - override fun onDestroyView() { - super.onDestroyView() - - fixAnimInfoLeak() - } - /** * Function that handles when an [item] is selected. * Handles all datatypes that are selectable. diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt index 06ad68c64..50778f756 100644 --- a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt @@ -12,7 +12,6 @@ import org.oxycblt.auxio.databinding.FragmentSongsBinding import org.oxycblt.auxio.logD import org.oxycblt.auxio.music.MusicStore import org.oxycblt.auxio.playback.PlaybackViewModel -import org.oxycblt.auxio.ui.fixAnimInfoLeak import org.oxycblt.auxio.ui.getSpans import org.oxycblt.auxio.ui.newMenu @@ -67,12 +66,6 @@ class SongsFragment : Fragment() { return binding.root } - override fun onDestroyView() { - super.onDestroyView() - - fixAnimInfoLeak() - } - /** * Dumb shortcut for getting the first letter in a string, while regarding certain * semantics when it comes to articles. diff --git a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt index 2c24a62cf..a10c50c18 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt @@ -13,7 +13,6 @@ import android.os.Looper import android.util.DisplayMetrics import android.util.TypedValue import android.view.LayoutInflater -import android.view.View import android.view.WindowManager import android.widget.ImageButton import android.widget.TextView @@ -25,7 +24,6 @@ import androidx.annotation.DrawableRes import androidx.annotation.PluralsRes import androidx.annotation.StringRes import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment import androidx.recyclerview.widget.RecyclerView import org.oxycblt.auxio.R import org.oxycblt.auxio.logE @@ -258,20 +256,3 @@ private fun isSystemBarOnBottom(activity: Activity): Boolean { return (!canMove || width < height) } - -// --- HACKY NIGHTMARES --- - -/** - * Use ***REFLECTION*** to fix a memory leak in the [Fragment] source code where the focused view - * will never be cleared. I can't believe I have to do this. - */ -fun Fragment.fixAnimInfoLeak() { - try { - Fragment::class.java.getDeclaredMethod("setFocusedView", View::class.java).apply { - isAccessible = true - invoke(this@fixAnimInfoLeak, null) - } - } catch (e: Exception) { - logE("mAnimationInfo leak fix failed.") - } -} diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index d87d155a2..1f6ce920a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -24,16 +24,15 @@ 0dp com.google.android.material.theme.MaterialComponentsViewInflater - - @style/Theme.CustomDialog @style/ThemeOverlay.MaterialComponents.Dialog.Alert - - + @style/Theme.CustomDialog +