Open igordmn opened 2 years ago
Compose 1.0-beta1, Ubuntu 20.04, X11, JDK 11/16
import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.width import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowState import androidx.compose.ui.window.singleWindowApplication fun main() = singleWindowApplication( state = WindowState(size = DpSize(Dp.Unspecified, Dp.Unspecified)) ) { Box( Modifier .width(400.dp) .height(200.dp) .background(Color.Green) ) }
I investigated, and figured out that Swing (or it is X11?) returns wrong insets for JFrame right after it is visible:
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking import kotlinx.coroutines.swing.Swing import kotlinx.coroutines.yield import java.awt.Dimension import javax.swing.JFrame fun main() { runBlocking(Dispatchers.Swing) { val f = JFrame() f.size = Dimension(410, 230) f.isVisible = true println("${f.insets} ${f.isDisplayable}") yield() println("${f.insets} ${f.isDisplayable}") } }
Result:
java.awt.Insets[top=25,left=5,bottom=5,right=5] true // wrong insets java.awt.Insets[top=37,left=0,bottom=0,right=0] true // correct insets
Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.
Compose 1.0-beta1, Ubuntu 20.04, X11, JDK 11/16
I investigated, and figured out that Swing (or it is X11?) returns wrong insets for JFrame right after it is visible:
Result: