Skip to content

Commit 7ca2800

Browse files
authored
example: Enable Compose for Desktop Hot Reload (#97)
1 parent 582349c commit 7ca2800

File tree

4 files changed

+25
-17
lines changed

4 files changed

+25
-17
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ plugins {
66
alias(libs.plugins.android.application) apply false
77
alias(libs.plugins.android.library) apply false
88
alias(libs.plugins.compose.compiler) apply false
9+
alias(libs.plugins.compose.hotReload) apply false
910
alias(libs.plugins.jetbrains.compose) apply false
1011
alias(libs.plugins.jetbrains.dokka) apply false
1112
alias(libs.plugins.kotlin.multiplatform) apply false

example/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import java.util.Properties
1313
plugins {
1414
alias(libs.plugins.android.application)
1515
alias(libs.plugins.compose.compiler)
16+
alias(libs.plugins.compose.hotReload)
1617
alias(libs.plugins.jetbrains.compose)
1718
alias(libs.plugins.kotlin.multiplatform)
1819
alias(libs.plugins.spotless)
@@ -258,3 +259,7 @@ val generateVersionInfo by tasks.registering {
258259
tasks.named("generateComposeResClass").configure {
259260
dependsOn(generateVersionInfo)
260261
}
262+
263+
tasks.named<JavaExec>("hotRunDesktop") {
264+
jvmArgs("-Dapp.mode=hot")
265+
}

example/src/desktopMain/kotlin/Main.desktop.kt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@ import top.yukonga.miuix.kmp.example.generated.resources.Res
1313
import top.yukonga.miuix.kmp.example.generated.resources.icon
1414
import java.awt.Dimension
1515

16-
fun main() =
17-
application {
18-
val state =
19-
rememberWindowState(
20-
size = DpSize(420.dp, 840.dp),
21-
position = WindowPosition.Aligned(Alignment.Center),
22-
)
23-
Window(
24-
state = state,
25-
onCloseRequest = ::exitApplication,
26-
title = "Miuix",
27-
icon = painterResource(Res.drawable.icon),
28-
) {
29-
window.minimumSize = Dimension(300, 600)
30-
App()
31-
}
32-
}
16+
fun main() = application {
17+
val state = rememberWindowState(
18+
size = DpSize(420.dp, 840.dp),
19+
position = WindowPosition.Aligned(Alignment.Center),
20+
)
21+
val isHotReloadMode = System.getProperty("app.mode") == "hot"
22+
Window(
23+
state = state,
24+
onCloseRequest = ::exitApplication,
25+
alwaysOnTop = isHotReloadMode,
26+
title = "Miuix",
27+
icon = painterResource(Res.drawable.icon),
28+
) {
29+
window.minimumSize = Dimension(300, 600)
30+
App()
31+
}
32+
}

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ android-gradle-plugin = "8.12.0"
33
androidx-activity-compose = "1.10.1"
44
androidx-window = "1.4.0"
55
androidx-graphics-shapes = "1.0.0-alpha09"
6+
compose-hotReload = "1.0.0-beta04"
67
compose-plugin = "1.8.2"
78
dokka = "2.0.0"
89
kotlin = "2.2.0"
@@ -18,6 +19,7 @@ compose-window-size = { module = "org.jetbrains.compose.material3:material3-wind
1819
android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" }
1920
android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" }
2021
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
22+
compose-hotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "compose-hotReload" }
2123
jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
2224
jetbrains-dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
2325
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }

0 commit comments

Comments
 (0)