Get java.awt.IllegalComponentStateException when click cancel in setting dialog
Zane-XY opened this issue · comments
What happened?
I'm working on a plugin setting panel, whenever I click the "cancel" button from the dialog, I get this exception. And at first, I thought it was my implementation issue. But I found I can reproduce it when using official samples from Jetbrains.
Relevant log output or stack trace
java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
at java.desktop/java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:2134)
at java.desktop/java.awt.Component.getLocationOnScreen(Component.java:2108)
at java.desktop/sun.lwawt.macosx.CAccessibility$22.call(CAccessibility.java:483)
at java.desktop/sun.lwawt.macosx.CAccessibility$22.call(CAccessibility.java:481)
at java.desktop/sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:706)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
at java.desktop/sun.awt.AWTThreading$TrackedInvocationEvent.lambda$dispatch$3(AWTThreading.java:310)
at java.desktop/sun.awt.AWTThreading$TrackedInvocationEvent.completeIfNotYet(AWTThreading.java:323)
at java.desktop/sun.awt.AWTThreading$TrackedInvocationEvent.dispatch(AWTThreading.java:310)
at java.desktop/sun.awt.AWTThreading.execute(AWTThreading.java:187)
at java.desktop/sun.awt.AWTThreading.executeWaitToolkit(AWTThreading.java:115)
at java.desktop/sun.awt.AWTThreading.executeWaitToolkit(AWTThreading.java:77)
at java.desktop/sun.awt.AWTThreading.executeWaitToolkit(AWTThreading.java:88)
at java.desktop/sun.lwawt.macosx.CPlatformWindow.lambda$setVisible$11(CPlatformWindow.java:766)
at java.desktop/sun.lwawt.macosx.CFRetainedResource.execute(CFRetainedResource.java:134)
at java.desktop/sun.lwawt.macosx.CPlatformWindow.setVisible(CPlatformWindow.java:766)
at java.desktop/sun.lwawt.LWWindowPeer.setVisibleImpl(LWWindowPeer.java:306)
at java.desktop/sun.lwawt.LWComponentPeer.setVisible(LWComponentPeer.java:775)
at java.desktop/java.awt.Component.hide(Component.java:1786)
at java.desktop/java.awt.Window.hide(Window.java:1153)
at java.desktop/java.awt.Dialog.hide(Dialog.java:1160)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.hide(DialogWrapperPeerImpl.java:791)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.dispose(DialogWrapperPeerImpl.java:797)
at com.intellij.openapi.util.ObjectTree.runWithTrace(ObjectTree.java:127)
at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:159)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:243)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:231)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.lambda$dispose$1(DialogWrapperPeerImpl.java:251)
at com.intellij.util.ui.EdtInvocationManager.invokeLaterIfNeeded(EdtInvocationManager.java:33)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.dispose(DialogWrapperPeerImpl.java:261)
at com.intellij.openapi.ui.DialogWrapper.dispose(DialogWrapper.java:928)
at com.intellij.openapi.ui.DialogWrapper$1.dispose(DialogWrapper.java:153)
at com.intellij.openapi.util.ObjectTree.runWithTrace(ObjectTree.java:127)
at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:159)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:243)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:231)
at com.intellij.openapi.ui.DialogWrapper.close(DialogWrapper.java:461)
at com.intellij.openapi.ui.DialogWrapper.close(DialogWrapper.java:465)
at com.intellij.openapi.ui.DialogWrapper.doCancelAction(DialogWrapper.java:978)
at com.intellij.openapi.ui.DialogWrapper.doCancelAction(DialogWrapper.java:997)
at com.intellij.openapi.options.newEditor.SettingsDialog.doCancelAction(SettingsDialog.java:217)
at com.intellij.openapi.ui.DialogWrapper$CancelAction.doAction(DialogWrapper.java:1880)
at com.intellij.openapi.ui.DialogWrapper$DialogWrapperAction.actionPerformed(DialogWrapper.java:1815)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6648)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3392)
at java.desktop/java.awt.Component.processEvent(Component.java:6413)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5022)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2802)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:754)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:752)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:751)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:831)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:753)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121)
at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
at java.desktop/java.awt.Dialog.show(Dialog.java:1080)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:743)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:467)
at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1676)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1634)
at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:90)
at com.intellij.ide.actions.ShowSettingsAction.perform(ShowSettingsAction.java:60)
at com.intellij.ui.mac.MacOSApplicationProvider$Worker.initMacApplication$lambda$2$lambda$1(MacOSApplicationProvider.kt:71)
at com.intellij.ui.mac.MacOSApplicationProvider$Worker.submit$lambda$6(MacOSApplicationProvider.kt:170)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:21)
at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838)
at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:454)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:74)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:114)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:36)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:749)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:756)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
2023-08-10 21:25:26,327 [ 584461] WARN - #c.i.o.o.e.ConfigurableExtensionPointUtil - ignore deprecated groupId: language for id: preferences.language.Kotlin.scripting
Steps to reproduce
Clone: https://github.com/JetBrains/intellij-sdk-code-samples/tree/main/settings
Without any modification, just launch the plugin from the IDE. In the sandbox IDE where plugin is hosted, open the settings, can click the "Cancel" button directly:
And check the exceptions in the IDE console.
Gradle IntelliJ Plugin version
1.15.0
Gradle version
8.2.1
Operating System
macOS
Link to build, i.e. failing GitHub Action job
No response
For questions not directly related to the Plugin Template, please see: https://plugins.jetbrains.com/docs/intellij/getting-help.html