diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/node/RootNodeOwner.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/node/RootNodeOwner.skiko.kt index 77b044f55d50b..adfb6d1801dd5 100644 --- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/node/RootNodeOwner.skiko.kt +++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/node/RootNodeOwner.skiko.kt @@ -548,9 +548,8 @@ internal class RootNodeOwner( override val semanticsOwner = SemanticsOwner(root, rootSemanticsNode, layoutNodes) override val windowInfo get() = platformContext.windowInfo - //TODO https://youtrack.jetbrains.com/issue/CMP-10709/Support-mediaQuery-derivedMediaQuery @ExperimentalMediaQueryApi - override val uiMediaScope: UiMediaScope? get() = null + override val uiMediaScope: UiMediaScope get() = platformContext.mediaScope override val retainedValuesStore: RetainedValuesStore get() = ForgetfulRetainedValuesStore override val rectManager = RectManager(layoutNodes) diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/CompositionLocals.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/CompositionLocals.skiko.kt index 7eff73fd2255c..0f0e953a810fe 100644 --- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/CompositionLocals.skiko.kt +++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/CompositionLocals.skiko.kt @@ -24,6 +24,7 @@ import androidx.compose.runtime.ProvidedValue import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.LocalSaveableStateRegistry import androidx.compose.runtime.staticCompositionLocalOf +import androidx.compose.ui.ComposeUiFlags import androidx.compose.ui.ExperimentalMediaQueryApi import androidx.compose.ui.InternalComposeUiApi import androidx.compose.ui.LocalUiMediaScope @@ -90,16 +91,25 @@ internal fun ProvidePlatformCompositionLocals( HostDefaultProviderImpl(platformContext) } + val mediaScope = if ( + !ComposeUiFlags.isMinimalistLocalsEnabled && + ComposeUiFlags.isMediaQueryIntegrationEnabled + ) { + arrayOf(LocalUiMediaScope provides platformContext.mediaScope) + } else { + emptyArray() + } + CompositionLocalProvider( *values, LocalPlatformScreenReader provides platformContext.screenReader, LocalPlatformWindowInsets provides platformContext.windowInsets, LocalPlatformPrefetchScheduler provides platformContext.prefetchScheduler, - LocalUiMediaScope provides platformContext.mediaScope, androidx.lifecycle.compose.LocalLifecycleOwner provides platformContext.architectureComponentsOwner.lifecycleOwner, LocalSavedStateRegistryOwner provides platformContext.architectureComponentsOwner.savedStateRegistryOwner, LocalSaveableStateRegistry provides saveableStateRegistry, LocalHostDefaultProvider provides hostDefaultProvider, + *mediaScope, content = content, ) } diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/PlatformContext.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/PlatformContext.skiko.kt index 0db4ede955720..6f7a049de1765 100644 --- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/PlatformContext.skiko.kt +++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/PlatformContext.skiko.kt @@ -231,7 +231,7 @@ interface PlatformContext { * using media state remains safe on platforms that do not provide a richer * implementation. */ - @OptIn(ExperimentalMediaQueryApi::class) + @ExperimentalMediaQueryApi val mediaScope: UiMediaScope get() = EmptyMediaScope interface RootForTestListener { @@ -411,7 +411,7 @@ private object NoOpHapticFeedback : HapticFeedback { override fun performHapticFeedback(hapticFeedbackType: HapticFeedbackType) = Unit } -@OptIn(ExperimentalMediaQueryApi::class) +@ExperimentalMediaQueryApi private object EmptyMediaScope : UiMediaScope { override val windowPosture: UiMediaScope.Posture get() = UiMediaScope.Posture.Flat @@ -429,4 +429,4 @@ private object EmptyMediaScope : UiMediaScope { get() = false override val viewingDistance: UiMediaScope.ViewingDistance get() = UiMediaScope.ViewingDistance.Near -} \ No newline at end of file +}