diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 119150f..badc49e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,8 +12,8 @@ android { applicationId = "org.soulstone.overwatch" minSdk = 26 targetSdk = 35 - versionCode = 13 - versionName = "0.3.1" + versionCode = 14 + versionName = "0.3.2" } buildTypes { diff --git a/app/src/main/kotlin/org/soulstone/overwatch/service/OverlayManager.kt b/app/src/main/kotlin/org/soulstone/overwatch/service/OverlayManager.kt index 7918274..4227a11 100644 --- a/app/src/main/kotlin/org/soulstone/overwatch/service/OverlayManager.kt +++ b/app/src/main/kotlin/org/soulstone/overwatch/service/OverlayManager.kt @@ -92,12 +92,17 @@ class OverlayManager( val newOwner = OverlayOwner() val composeView = ComposeView(context).apply { - setViewTreeLifecycleOwner(newOwner) - setViewTreeSavedStateRegistryOwner(newOwner) setContent { OverlayBubble() } } // Wrap so we can intercept *before* MapView's own touch handling. + // Compose's WindowRecomposer reads findViewTreeLifecycleOwner from + // the *window-root* view (= the wrapper here, since it's what's + // attached to WindowManager). Setting the owner only on the inner + // ComposeView throws IllegalStateException at composition startup — + // that was the v0.3.1 crash. val wrapper = TouchInterceptor(context).apply { + setViewTreeLifecycleOwner(newOwner) + setViewTreeSavedStateRegistryOwner(newOwner) addView( composeView, FrameLayout.LayoutParams(