Fix window resize (desktop)
This commit is contained in:
@@ -1,32 +1,23 @@
|
|||||||
package com.jaytux.phoebench.clients
|
package com.jaytux.phoebench.clients
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Box
|
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.runtime.*
|
||||||
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.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.awt.SwingPanel
|
import androidx.compose.ui.awt.SwingPanel
|
||||||
import androidx.compose.ui.unit.Dp
|
|
||||||
import androidx.compose.ui.unit.DpOffset
|
import androidx.compose.ui.unit.DpOffset
|
||||||
import androidx.compose.ui.unit.DpSize
|
import androidx.compose.ui.unit.DpSize
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.Window
|
import androidx.compose.ui.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 com.jaytux.phoebench.clients.theme.GlobalUiMode
|
import com.jaytux.phoebench.clients.theme.GlobalUiMode
|
||||||
import com.jaytux.phoebench.clients.theme.UiMode
|
import com.jaytux.phoebench.clients.theme.UiMode
|
||||||
import java.awt.GraphicsConfiguration
|
import java.awt.GraphicsConfiguration
|
||||||
import java.awt.GraphicsEnvironment
|
import java.awt.GraphicsEnvironment
|
||||||
import java.awt.Toolkit
|
import java.awt.Toolkit
|
||||||
|
import java.awt.event.ComponentEvent
|
||||||
|
import java.awt.event.ComponentListener
|
||||||
import javax.swing.JPanel
|
import javax.swing.JPanel
|
||||||
|
|
||||||
fun windowData(config: GraphicsConfiguration): Pair<DpSize, DpOffset> {
|
fun windowData(config: GraphicsConfiguration): Pair<DpSize, DpOffset> {
|
||||||
@@ -49,6 +40,21 @@ fun main() = application {
|
|||||||
var mode by remember { mutableStateOf(UiMode.NARROW) }
|
var mode by remember { mutableStateOf(UiMode.NARROW) }
|
||||||
|
|
||||||
Window(onCloseRequest = ::exitApplication, state, title = "PhoeBench") {
|
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()) {
|
Column(Modifier.fillMaxSize()) {
|
||||||
SwingPanel(modifier = Modifier.size(0.dp), factory = {
|
SwingPanel(modifier = Modifier.size(0.dp), factory = {
|
||||||
JPanel().apply {
|
JPanel().apply {
|
||||||
|
|||||||
Reference in New Issue
Block a user