After upgrading to `0.5.0-build229` I get an exce...
# compose-desktop
d
After upgrading to
0.5.0-build229
I get an exception, because I have set
size
in the `Windows`’s state
Copy code
Window(onCloseRequest = {}, undecorated = true, resizable = false, state = WindowState(size = WindowSize(400.dp, 200.dp)))
The exception:
Copy code
Trying METAL rendering...
Exception in thread "main" java.awt.IllegalComponentStateException: The window is showing on screen.
	at java.desktop/java.awt.Window.setLocationByPlatform(Window.java:3478)
	at androidx.compose.ui.util.Windows_desktopKt.setLocationByPlatformSafely(Windows.desktop.kt:94)
	at androidx.compose.ui.util.Windows_desktopKt.setPositionSafely(Windows.desktop.kt:66)
	at androidx.compose.ui.util.Windows_desktopKt.setPositionSafely(Windows.desktop.kt:50)
	at androidx.compose.ui.window.Window_desktopKt$Window$5$1$9.invoke(Window.desktop.kt:183)
	at androidx.compose.ui.window.Window_desktopKt$Window$5$1$9.invoke(Window.desktop.kt:183)
	at androidx.compose.ui.util.ComponentUpdater$UpdateScope.set(ComponentUpdater.kt:40)
	at androidx.compose.ui.window.Window_desktopKt$Window$5$1.invoke(Window.desktop.kt:183)
	at androidx.compose.ui.window.Window_desktopKt$Window$5$1.invoke(Window.desktop.kt:174)
	at androidx.compose.ui.util.ComponentUpdater.update(ComponentUpdater.kt:27)
	at androidx.compose.ui.window.Window_desktopKt$Window$5.invoke(Window.desktop.kt:174)
	at androidx.compose.ui.window.Window_desktopKt$Window$5.invoke(Window.desktop.kt:173)
	at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$3.invoke(AwtWindow.desktop.kt:87)
	at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$3.invoke(AwtWindow.desktop.kt:86)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2$performUpdate$2.invoke(UpdateEffect.desktop.kt:58)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2$performUpdate$2.invoke(UpdateEffect.desktop.kt:57)
	at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:1788)
	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:119)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2.invoke$performUpdate(UpdateEffect.desktop.kt:54)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2.access$invoke$performUpdate(UpdateEffect.desktop.kt:47)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2$performUpdate$1$1.invoke(UpdateEffect.desktop.kt:56)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2$performUpdate$1$1.invoke(UpdateEffect.desktop.kt:56)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$1.invokeSuspend(UpdateEffect.desktop.kt:43)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at java.desktop/java.awt.event.InvocationEvent.dispatch$$$capture(InvocationEvent.java:316)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Any pointers? If I remove the
state = WindowState
everything is ok.
j
This is just me guessing, but I think it is that since you're creating a new window state on each redraw it will try to create a new window each time, but since the window is already there it fails (it probably have some id made up of the parameters passed into state). You can solve it by using the
rememberWindowState
function like this:
Copy code
state = rememberWindowState(size = WindowSize(400.dp, 200.dp))
d
That did it! Thanks!