From 8bc0f269835471fcb4a09911f63522f7d3a807be Mon Sep 17 00:00:00 2001 From: Victor Kropp Date: Fri, 6 Feb 2026 14:17:59 +0100 Subject: [PATCH 1/2] Use single skiko-awt-runtime dependency on Desktop --- .../build/JetBrainsAndroidXImplPlugin.kt | 1 + ...ainsConfigureSkikoAwtRuntimeConstraints.kt | 60 ++++++++++++++ buildSrc/settingsScripts/skiko-setup.groovy | 65 ---------------- compose/desktop/desktop/build.gradle | 78 +++++++++++++------ .../desktop/samples-material3/build.gradle | 2 +- compose/desktop/desktop/samples/build.gradle | 4 +- compose/foundation/foundation/build.gradle | 2 +- compose/material/material/build.gradle | 2 +- compose/material3/material3/build.gradle | 2 +- compose/mpp/demo/build.gradle.kts | 2 +- compose/ui/ui-graphics/build.gradle | 2 +- compose/ui/ui-test-junit4/build.gradle | 2 +- compose/ui/ui-test/build.gradle | 2 +- compose/ui/ui-text/build.gradle | 2 +- compose/ui/ui/build.gradle | 2 +- gradle/libs.versions.toml | 1 + .../lifecycle-viewmodel-compose/build.gradle | 2 +- navigation/navigation-compose/build.gradle | 2 +- settings.gradle | 2 - 19 files changed, 132 insertions(+), 103 deletions(-) create mode 100644 buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsConfigureSkikoAwtRuntimeConstraints.kt delete mode 100644 buildSrc/settingsScripts/skiko-setup.groovy diff --git a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXImplPlugin.kt b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXImplPlugin.kt index a25f6c4e74345..645d77bb2b98f 100644 --- a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXImplPlugin.kt +++ b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXImplPlugin.kt @@ -149,6 +149,7 @@ class JetBrainsAndroidXImplPlugin @Inject constructor( project.changeMavenCoordinatesToJetBrains() project.configureMavenArtifactUpload(componentFactory) project.configureDependencyVerification() + project.configureSkikoAwtRuntimeConstraints() project.plugins.all { plugin -> if (plugin is KotlinMultiplatformPluginWrapper) { onKotlinMultiplatformPluginApplied(project) diff --git a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsConfigureSkikoAwtRuntimeConstraints.kt b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsConfigureSkikoAwtRuntimeConstraints.kt new file mode 100644 index 0000000000000..fea6ea7425faa --- /dev/null +++ b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsConfigureSkikoAwtRuntimeConstraints.kt @@ -0,0 +1,60 @@ +/* + * Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.androidx.build + +import org.gradle.api.Project +import org.gradle.api.artifacts.DependencySubstitution +import org.gradle.api.artifacts.component.ModuleComponentSelector +import org.gradle.nativeplatform.MachineArchitecture +import org.gradle.nativeplatform.OperatingSystemFamily +import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform + +fun Project.configureSkikoAwtRuntimeConstraints() { + val currentOs = DefaultNativePlatform.getCurrentOperatingSystem() + val currentArch = DefaultNativePlatform.getCurrentArchitecture() + + val platformSuffix = when { + currentOs.isMacOsX && currentArch.isArm64 -> "macos-arm64" + currentOs.isMacOsX && currentArch.isAmd64 -> "macos-x64" + currentOs.isLinux && currentArch.isArm64 -> "linux-arm64" + currentOs.isLinux && currentArch.isAmd64 -> "linux-x64" + currentOs.isWindows && currentArch.isArm64 -> "windows-arm64" + currentOs.isWindows && currentArch.isAmd64 -> "windows-x64" + else -> error("Unsupported platform: OS=${currentOs.name}, Arch=${currentArch.name}") + } + + // Use dependency substitution to replace the universal dependency with platform-specific one + // during resolution, without affecting what gets published + project.configurations.configureEach { configuration -> + if (configuration.isCanBeResolved) { + configuration.resolutionStrategy.dependencySubstitution { + it.all { substitution -> + val requested = substitution.requested + if (requested is ModuleComponentSelector && + requested.group == "org.jetbrains.skiko" && + requested.module == "skiko-awt-runtime") { + // Keep the same version, just change the module name to platform-specific + substitution.useTarget( + "${requested.group}:skiko-awt-runtime-${platformSuffix}:${requested.version}", + "Platform-specific variant selection based on current machine" + ) + } + } + } + } + } +} diff --git a/buildSrc/settingsScripts/skiko-setup.groovy b/buildSrc/settingsScripts/skiko-setup.groovy deleted file mode 100644 index fe6c3ed232cd6..0000000000000 --- a/buildSrc/settingsScripts/skiko-setup.groovy +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import org.gradle.api.GradleException -import org.gradle.api.initialization.Settings - -class SkikoSetup { - /** - * Declares the skiko entry in the version catalog of the given settings instance. - * - * @param settings The settings instance for the current root project - */ - static void defineSkikoInVersionCatalog(Settings settings) { - settings.dependencyResolutionManagement { - versionCatalogs { - libs { - def skikoOverride = System.getenv("SKIKO_VERSION") - if (skikoOverride != null) { - logger.warn("Using custom version ${skikoOverride} of SKIKO due to " + - "SKIKO_VERSION being set.") - version('skiko', skikoOverride) - } - String os = System.getProperty("os.name").toLowerCase(Locale.US) - String currentOsArtifact - if (os.contains("mac os x") || os.contains("darwin") || os.contains("osx")) { - def arch = System.getProperty("os.arch") - if (arch == "aarch64") { - currentOsArtifact = "skiko-awt-runtime-macos-arm64" - } else { - currentOsArtifact = "skiko-awt-runtime-macos-x64" - } - } else if (os.startsWith("win")) { - currentOsArtifact = "skiko-awt-runtime-windows-x64" - } else if (os.startsWith("linux")) { - def arch = System.getProperty("os.arch") - if (arch == "aarch64") { - currentOsArtifact = "skiko-awt-runtime-linux-arm64" - } else { - currentOsArtifact = "skiko-awt-runtime-linux-x64" - } - } else { - throw new GradleException("Unsupported operating system $os") - } - library("skikoCurrentOs", "org.jetbrains.skiko", - currentOsArtifact).versionRef("skiko") - } - } - } - } -} - -ext.skikoSetup = new SkikoSetup() \ No newline at end of file diff --git a/compose/desktop/desktop/build.gradle b/compose/desktop/desktop/build.gradle index 9a9eeb8695b59..adc9d981f8a8b 100644 --- a/compose/desktop/desktop/build.gradle +++ b/compose/desktop/desktop/build.gradle @@ -14,8 +14,11 @@ * limitations under the License. */ + import androidx.build.AndroidXConfig import androidx.build.SoftwareType +import org.gradle.api.internal.component.SoftwareComponentInternal +import org.gradle.api.internal.component.UsageContext plugins { id("AndroidXPlugin") @@ -38,6 +41,7 @@ androidXMultiplatform { jvmMain.dependencies { implementation(libs.kotlinCoroutinesCore) + implementation(libs.skikoAwtRuntime) } jvmTest { @@ -45,7 +49,6 @@ androidXMultiplatform { resources.srcDirs += "src/jvmTest/res" dependencies { implementation(libs.kotlinCoroutinesTest) - implementation(libs.skikoCurrentOs) implementation(project(":compose:ui:ui-test-junit4")) implementation(libs.junit) implementation(libs.truth) @@ -75,29 +78,60 @@ androidx { } def jvmOs(container, name, skikoDep) { + def projectGroup = project.group + def projectName = project.name + def composeVersion = project.version + def skikoModule = skikoDep.module + def skikoVersion = skikoDep.versionConstraint.requiredVersion + + def desktopDep = dependencies.create("${projectGroup}:${projectName}:${composeVersion}") { + exclude group: 'org.jetbrains.skiko', module: 'skiko-awt-runtime' + } + def skikoRuntimeDep = dependencies.create("${skikoModule.group}:${skikoModule.name}:${skikoVersion}") + + def apiElements = configurations.create("jvm${name}ApiElements") { + canBeResolved = false + canBeConsumed = true + attributes { + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_API)) + } + } + def runtimeElements = configurations.create("jvm${name}RuntimeElements") { + canBeResolved = false + canBeConsumed = true + attributes { + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME)) + } + } + + def apiUsage = [ + getName: { -> apiElements.name }, + getArtifacts: { -> [] as Set }, + getAttributes: { -> apiElements.attributes }, + getCapabilities: { -> [] as Set }, + getDependencies: { -> [desktopDep] as Set }, + getDependencyConstraints: { -> [] as Set }, + getGlobalExcludes: { -> [] as Set }, + ] as UsageContext + + def runtimeUsage = [ + getName: { -> runtimeElements.name }, + getArtifacts: { -> [] as Set }, + getAttributes: { -> runtimeElements.attributes }, + getCapabilities: { -> [] as Set }, + getDependencies: { -> [desktopDep, skikoRuntimeDep] as Set }, + getDependencyConstraints: { -> [] as Set }, + getGlobalExcludes: { -> [] as Set }, + ] as UsageContext + + def component = [ + getName: { -> "jvm${name}" }, + getUsages: { -> [apiUsage, runtimeUsage] as Set }, + ] as SoftwareComponentInternal + container.create("jvm$name", MavenPublication) { artifactId = "${project.name}-jvm-$name" - def projectGroup = project.group - def projectName = project.name - def composeVersion = project.version - def skikoModule = skikoDep.module - def skikoVersion = skikoDep.versionConstraint.requiredVersion - pom { - withXml { - def dependenciesNode = asNode().appendNode("dependencies") - def desktopDependency = dependenciesNode.appendNode("dependency") - desktopDependency.appendNode("groupId", projectGroup) - desktopDependency.appendNode("artifactId", projectName) - desktopDependency.appendNode("version", composeVersion) - desktopDependency.appendNode("scope", "compile") - - def skikoDependency = dependenciesNode.appendNode("dependency") - skikoDependency.appendNode("groupId", skikoModule.group) - skikoDependency.appendNode("artifactId", skikoModule.name) - skikoDependency.appendNode("version", skikoVersion) - skikoDependency.appendNode("scope", "runtime") - } - } + from(component) } } diff --git a/compose/desktop/desktop/samples-material3/build.gradle b/compose/desktop/desktop/samples-material3/build.gradle index 0ac7cd74cd82f..01ddfd7d6cadb 100644 --- a/compose/desktop/desktop/samples-material3/build.gradle +++ b/compose/desktop/desktop/samples-material3/build.gradle @@ -30,7 +30,7 @@ kotlin { } jvmMain.dependencies { - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) implementation(project(":compose:material3:material3")) implementation(project(":compose:desktop:desktop")) } diff --git a/compose/desktop/desktop/samples/build.gradle b/compose/desktop/desktop/samples/build.gradle index 44047f1d7aff3..72e1ebe0f16fd 100644 --- a/compose/desktop/desktop/samples/build.gradle +++ b/compose/desktop/desktop/samples/build.gradle @@ -33,8 +33,8 @@ kotlin { resources.srcDirs += "src/jvmMain/res" dependencies { - implementation(libs.skikoCurrentOs) - implementation(project(":collection:collection")) + implementation(libs.skikoAwtRuntime) + implementation(project(":collection:collection")) implementation(project(":compose:desktop:desktop")) implementation("org.jetbrains.compose.material:material-icons-core:1.7.3") { diff --git a/compose/foundation/foundation/build.gradle b/compose/foundation/foundation/build.gradle index 9a9a6ab6c3070..a03454dff2d32 100644 --- a/compose/foundation/foundation/build.gradle +++ b/compose/foundation/foundation/build.gradle @@ -150,7 +150,7 @@ androidXMultiplatform { implementation(project(":compose:ui:ui-test-junit4")) implementation(libs.truth) implementation(libs.junit) - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) implementation(libs.kotlinCoroutinesSwing) implementation(libs.mockitoCore4) implementation(libs.mockitoKotlin4) diff --git a/compose/material/material/build.gradle b/compose/material/material/build.gradle index eb8457fe6c4f2..5cc9a8586ea1e 100644 --- a/compose/material/material/build.gradle +++ b/compose/material/material/build.gradle @@ -128,7 +128,7 @@ androidXMultiplatform { implementation(project(":compose:ui:ui-test-junit4")) implementation(libs.truth) implementation(libs.junit) - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) } } diff --git a/compose/material3/material3/build.gradle b/compose/material3/material3/build.gradle index 6d76ca6d4ec43..f8a9f411c77e4 100644 --- a/compose/material3/material3/build.gradle +++ b/compose/material3/material3/build.gradle @@ -136,7 +136,7 @@ androidXMultiplatform { implementation(project(":compose:ui:ui-test-junit4")) implementation(libs.truth) implementation(libs.junit) - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) } } diff --git a/compose/mpp/demo/build.gradle.kts b/compose/mpp/demo/build.gradle.kts index 2065ba3a232aa..e8cb68977b30f 100644 --- a/compose/mpp/demo/build.gradle.kts +++ b/compose/mpp/demo/build.gradle.kts @@ -164,7 +164,7 @@ kotlin { dependsOn(skikoMain) dependencies { implementation(libs.kotlinCoroutinesSwing) - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) } } diff --git a/compose/ui/ui-graphics/build.gradle b/compose/ui/ui-graphics/build.gradle index f3255303c45f7..c01c23d9e6815 100644 --- a/compose/ui/ui-graphics/build.gradle +++ b/compose/ui/ui-graphics/build.gradle @@ -132,7 +132,7 @@ androidXMultiplatform { dependencies { implementation(libs.junit) implementation(libs.truth) - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) implementation(project(":compose:ui:ui-test-junit4")) } } diff --git a/compose/ui/ui-test-junit4/build.gradle b/compose/ui/ui-test-junit4/build.gradle index 0681cb6484ef5..f81b269e745b9 100644 --- a/compose/ui/ui-test-junit4/build.gradle +++ b/compose/ui/ui-test-junit4/build.gradle @@ -126,7 +126,7 @@ androidXMultiplatform { dependencies { implementation(libs.truth) implementation(libs.junit) - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) } } } diff --git a/compose/ui/ui-test/build.gradle b/compose/ui/ui-test/build.gradle index 5c1b40b03b2b4..afbc69c2c8b6a 100644 --- a/compose/ui/ui-test/build.gradle +++ b/compose/ui/ui-test/build.gradle @@ -161,7 +161,7 @@ androidXMultiplatform { desktopTest { dependsOn(skikoTest) dependencies { - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) } } diff --git a/compose/ui/ui-text/build.gradle b/compose/ui/ui-text/build.gradle index e3108df307cb3..c12a327dbdeaf 100644 --- a/compose/ui/ui-text/build.gradle +++ b/compose/ui/ui-text/build.gradle @@ -135,7 +135,7 @@ androidXMultiplatform { dependencies { implementation(libs.truth) implementation(libs.junit) - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) implementation(project(":compose:foundation:foundation")) implementation(project(":compose:ui:ui-test-junit4")) implementation(project(":internal-testutils-fonts")) diff --git a/compose/ui/ui/build.gradle b/compose/ui/ui/build.gradle index 8bf90f9f59401..cf9d730610bc9 100644 --- a/compose/ui/ui/build.gradle +++ b/compose/ui/ui/build.gradle @@ -247,7 +247,7 @@ androidXMultiplatform { implementation(libs.mockitoCore4) implementation(libs.mockitoKotlin) implementation(libs.mockitoKotlin4) - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) implementation(libs.kotlinCoroutinesSwing) implementation(libs.kotlinCoroutinesTest) implementation(project(":compose:material:material")) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 733dd92bbfcf3..500fe80006891 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -295,6 +295,7 @@ sdklib = { module = "com.android.tools:sdklib", version.ref = "androidLint" } shadow = { module = "com.gradleup.shadow:shadow-gradle-plugin", version = "8.3.7" } skiko = { module = "org.jetbrains.skiko:skiko", version.ref = "skiko" } skikoAwt = { module = "org.jetbrains.skiko:skiko-awt", version.ref = "skiko" } +skikoAwtRuntime = { module = "org.jetbrains.skiko:skiko-awt-runtime", version.ref = "skiko" } skikoAwtRuntimeMacOsArm64 = { module = "org.jetbrains.skiko:skiko-awt-runtime-macos-arm64", version.ref = "skiko" } skikoAwtRuntimeMacOsX64 = { module = "org.jetbrains.skiko:skiko-awt-runtime-macos-x64", version.ref = "skiko" } skikoAwtRuntimeWindowsX64 = { module = "org.jetbrains.skiko:skiko-awt-runtime-windows-x64", version.ref = "skiko" } diff --git a/lifecycle/lifecycle-viewmodel-compose/build.gradle b/lifecycle/lifecycle-viewmodel-compose/build.gradle index 4618e3062849a..8d76701bbe57f 100644 --- a/lifecycle/lifecycle-viewmodel-compose/build.gradle +++ b/lifecycle/lifecycle-viewmodel-compose/build.gradle @@ -114,7 +114,7 @@ androidXMultiplatform { desktopTest { dependsOn(nonAndroidTest) dependencies { - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) } } diff --git a/navigation/navigation-compose/build.gradle b/navigation/navigation-compose/build.gradle index da9fedc9c6ff0..ac01dfc8dc083 100644 --- a/navigation/navigation-compose/build.gradle +++ b/navigation/navigation-compose/build.gradle @@ -136,7 +136,7 @@ androidXMultiplatform { desktopTest { dependsOn(nonAndroidTest) dependencies { - implementation(libs.skikoCurrentOs) + implementation(libs.skikoAwtRuntime) implementation(libs.kotlinCoroutinesSwing) } } diff --git a/settings.gradle b/settings.gradle index 82360e36f643e..1f6398059afea 100644 --- a/settings.gradle +++ b/settings.gradle @@ -25,7 +25,6 @@ buildscript { ext.supportRootFolder = buildscript.sourceFile.getParentFile() apply(from: "buildSrc/repos.gradle") apply(from: "buildSrc/settingsScripts/project-dependency-graph.groovy") - apply(from: "buildSrc/settingsScripts/skiko-setup.groovy") repos.addMavenRepositories(repositories) @@ -50,7 +49,6 @@ buildscript { enableFeaturePreview "STABLE_CONFIGURATION_CACHE" def supportRootFolder = buildscript.sourceFile.getParentFile() -skikoSetup.defineSkikoInVersionCatalog(settings) /* In JetBrains Fork we don't force Android Studio usage. // Abort immediately if we're running in Studio, but not a managed instance of Studio. From a13f9c4792d14e93c0efcb73f61a8de1c27000ca Mon Sep 17 00:00:00 2001 From: Victor Kropp Date: Mon, 2 Mar 2026 11:03:48 +0100 Subject: [PATCH 2/2] remove `material` dependency from `desktop` module --- compose/desktop/desktop/build.gradle | 3 +- compose/desktop/desktop/samples/build.gradle | 3 +- .../compose/desktop/DesktopTheme.jvm.kt | 76 ------------------- 3 files changed, 3 insertions(+), 79 deletions(-) delete mode 100644 compose/desktop/desktop/src/jvmMain/kotlin/androidx/compose/desktop/DesktopTheme.jvm.kt diff --git a/compose/desktop/desktop/build.gradle b/compose/desktop/desktop/build.gradle index adc9d981f8a8b..103bdfdf0e08b 100644 --- a/compose/desktop/desktop/build.gradle +++ b/compose/desktop/desktop/build.gradle @@ -33,7 +33,6 @@ androidXMultiplatform { commonMain.dependencies { implementation(project(":compose:ui:ui-util")) api(project(":compose:foundation:foundation")) - api(project(":compose:material:material")) api(project(":compose:runtime:runtime")) api(project(":compose:ui:ui")) api(project(":compose:ui:ui-tooling-preview")) @@ -95,6 +94,7 @@ def jvmOs(container, name, skikoDep) { attributes { attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_API)) } + outgoing.capability("${project.group}:${project.name}-jvm-${name}:${project.version}") } def runtimeElements = configurations.create("jvm${name}RuntimeElements") { canBeResolved = false @@ -102,6 +102,7 @@ def jvmOs(container, name, skikoDep) { attributes { attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME)) } + outgoing.capability("${project.group}:${project.name}-jvm-${name}:${project.version}") } def apiUsage = [ diff --git a/compose/desktop/desktop/samples/build.gradle b/compose/desktop/desktop/samples/build.gradle index 72e1ebe0f16fd..dabfaf85f8623 100644 --- a/compose/desktop/desktop/samples/build.gradle +++ b/compose/desktop/desktop/samples/build.gradle @@ -33,10 +33,9 @@ kotlin { resources.srcDirs += "src/jvmMain/res" dependencies { - implementation(libs.skikoAwtRuntime) implementation(project(":collection:collection")) implementation(project(":compose:desktop:desktop")) - + implementation(project(":compose:material:material")) implementation("org.jetbrains.compose.material:material-icons-core:1.7.3") { // exclude dependencies, because they override local projects when we build 0.0.0-* version // (see https://repo1.maven.org/maven2/org/jetbrains/compose/material/material-icons-core-desktop/1.6.11/material-icons-core-desktop-1.6.11.module) diff --git a/compose/desktop/desktop/src/jvmMain/kotlin/androidx/compose/desktop/DesktopTheme.jvm.kt b/compose/desktop/desktop/src/jvmMain/kotlin/androidx/compose/desktop/DesktopTheme.jvm.kt deleted file mode 100644 index 1e8384c31fe52..0000000000000 --- a/compose/desktop/desktop/src/jvmMain/kotlin/androidx/compose/desktop/DesktopTheme.jvm.kt +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.compose.desktop - -import androidx.compose.foundation.LocalScrollbarStyle -import androidx.compose.foundation.ScrollbarStyle -import androidx.compose.material.Colors -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Shapes -import androidx.compose.material.Typography -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.ui.unit.dp - -@Deprecated( - "Use MaterialTheme", - replaceWith = ReplaceWith( - "MaterialTheme(colors, typography, shapes, content)", - "androidx.compose.material.MaterialTheme" - ) -) -@Suppress("DEPRECATION") -@Composable -fun DesktopMaterialTheme( - colors: Colors = MaterialTheme.colors, - typography: Typography = MaterialTheme.typography, - shapes: Shapes = MaterialTheme.shapes, - content: @Composable () -> Unit -) = MaterialTheme( - colors, - typography, - shapes -) { - DesktopTheme(content = content) -} - -@Deprecated( - "Use CompositionLocalProvider(LocalScrollbarStyle provides scrollbar)", - replaceWith = ReplaceWith( - "CompositionLocalProvider(\n" + - " LocalScrollbarStyle provides scrollbar,\n" + - " content = content\n" + - ")", - "androidx.compose.runtime.CompositionLocalProvider", - "androidx.compose.foundation.LocalScrollbarStyle" - ) -) -@Composable -fun DesktopTheme( - scrollbar: ScrollbarStyle = ScrollbarStyle( - minimalHeight = 16.dp, - thickness = 8.dp, - shape = MaterialTheme.shapes.small, - hoverDurationMillis = 300, - unhoverColor = MaterialTheme.colors.onSurface.copy(alpha = 0.12f), - hoverColor = MaterialTheme.colors.onSurface.copy(alpha = 0.50f) - ), - content: @Composable () -> Unit -) = CompositionLocalProvider( - LocalScrollbarStyle provides scrollbar, - content = content -) \ No newline at end of file