diff --git a/build.gradle.kts b/build.gradle.kts index 294257ad..ebcab2c5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,6 +6,7 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.compose.hotReload) apply false alias(libs.plugins.jetbrains.compose) apply false alias(libs.plugins.jetbrains.dokka) apply false alias(libs.plugins.kotlin.multiplatform) apply false diff --git a/example/build.gradle.kts b/example/build.gradle.kts index 86fdec76..32ca98d8 100644 --- a/example/build.gradle.kts +++ b/example/build.gradle.kts @@ -13,6 +13,7 @@ import java.util.Properties plugins { alias(libs.plugins.android.application) alias(libs.plugins.compose.compiler) + alias(libs.plugins.compose.hotReload) alias(libs.plugins.jetbrains.compose) alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.spotless) @@ -258,3 +259,7 @@ val generateVersionInfo by tasks.registering { tasks.named("generateComposeResClass").configure { dependsOn(generateVersionInfo) } + +tasks.named("hotRunDesktop") { + jvmArgs("-Dapp.mode=hot") +} \ No newline at end of file diff --git a/example/src/desktopMain/kotlin/Main.desktop.kt b/example/src/desktopMain/kotlin/Main.desktop.kt index 7db235b5..8bc759f5 100644 --- a/example/src/desktopMain/kotlin/Main.desktop.kt +++ b/example/src/desktopMain/kotlin/Main.desktop.kt @@ -13,20 +13,20 @@ import top.yukonga.miuix.kmp.example.generated.resources.Res import top.yukonga.miuix.kmp.example.generated.resources.icon import java.awt.Dimension -fun main() = - application { - val state = - rememberWindowState( - size = DpSize(420.dp, 840.dp), - position = WindowPosition.Aligned(Alignment.Center), - ) - Window( - state = state, - onCloseRequest = ::exitApplication, - title = "Miuix", - icon = painterResource(Res.drawable.icon), - ) { - window.minimumSize = Dimension(300, 600) - App() - } - } \ No newline at end of file +fun main() = application { + val state = rememberWindowState( + size = DpSize(420.dp, 840.dp), + position = WindowPosition.Aligned(Alignment.Center), + ) + val isHotReloadMode = System.getProperty("app.mode") == "hot" + Window( + state = state, + onCloseRequest = ::exitApplication, + alwaysOnTop = isHotReloadMode, + title = "Miuix", + icon = painterResource(Res.drawable.icon), + ) { + window.minimumSize = Dimension(300, 600) + App() + } +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a208885c..408a8cf6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,6 +3,7 @@ android-gradle-plugin = "8.12.0" androidx-activity-compose = "1.10.1" androidx-window = "1.4.0" androidx-graphics-shapes = "1.0.0-alpha09" +compose-hotReload = "1.0.0-beta04" compose-plugin = "1.8.2" dokka = "2.0.0" kotlin = "2.2.0" @@ -18,6 +19,7 @@ compose-window-size = { module = "org.jetbrains.compose.material3:material3-wind android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" } android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +compose-hotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "compose-hotReload" } jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" } jetbrains-dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }