diff --git a/clients/compose/src/desktopMain/kotlin/com/jaytux/phoebench/clients/Main.kt b/clients/compose/src/desktopMain/kotlin/com/jaytux/phoebench/clients/Main.kt index ed28858..2420b66 100644 --- a/clients/compose/src/desktopMain/kotlin/com/jaytux/phoebench/clients/Main.kt +++ b/clients/compose/src/desktopMain/kotlin/com/jaytux/phoebench/clients/Main.kt @@ -1,32 +1,23 @@ package com.jaytux.phoebench.clients -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.size -import androidx.compose.material3.Text -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue +import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.awt.SwingPanel -import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp -import androidx.compose.ui.window.Window -import androidx.compose.ui.window.WindowPlacement -import androidx.compose.ui.window.WindowPosition -import androidx.compose.ui.window.application -import androidx.compose.ui.window.rememberWindowState +import androidx.compose.ui.window.* import com.jaytux.phoebench.clients.theme.GlobalUiMode import com.jaytux.phoebench.clients.theme.UiMode import java.awt.GraphicsConfiguration import java.awt.GraphicsEnvironment import java.awt.Toolkit +import java.awt.event.ComponentEvent +import java.awt.event.ComponentListener import javax.swing.JPanel fun windowData(config: GraphicsConfiguration): Pair { @@ -49,6 +40,21 @@ fun main() = application { var mode by remember { mutableStateOf(UiMode.NARROW) } Window(onCloseRequest = ::exitApplication, state, title = "PhoeBench") { + var width by remember { mutableStateOf(window.width.dp) } + + LaunchedEffect(Unit) { + window.addComponentListener(object : ComponentListener { + override fun componentResized(e: ComponentEvent?) { + width = e?.component?.width?.dp ?: width + } + override fun componentMoved(e: ComponentEvent?) {} + override fun componentShown(e: ComponentEvent?) {} + override fun componentHidden(e: ComponentEvent?) {} + }) + } + + mode = UiMode.fromDp(width) + Column(Modifier.fillMaxSize()) { SwingPanel(modifier = Modifier.size(0.dp), factory = { JPanel().apply {