JetBrains / intellij-platform-plugin-template

Template repository for creating plugins for IntelliJ Platform
Apache License 2.0
3.04k stars 614 forks source link

Get java.awt.IllegalComponentStateException when click cancel in setting dialog #396

Closed Zane-XY closed 1 year ago

Zane-XY commented 1 year ago

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:

image

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

hsz commented 1 year ago

For questions not directly related to the Plugin Template, please see: https://plugins.jetbrains.com/docs/intellij/getting-help.html