boolean (AWTEvent event) { // LWCToolkit does 'invokeAndWait', which blocks native event processing until finished. The OS considers that blockage to be // app freeze, stops rendering UI and shows beach-ball cursor. We want the UI to act (almost) normally in write-action progresses, // so we let these specific events to be dispatched, hoping they wouldn't access project/code model. // problem (IDEA-192282): LWCToolkit event might be posted before PotemkinProgress appears, // and it then just sits in the queue blocking the whole UI until the progress is finished. String eventString = event.toString(); return eventString.contains(",runnable=sun.lwawt.macosx.LWCToolkit") || // [tav] todo: remove in 2022.2 (event.getClass().getName().equals("sun.awt.AWTThreading$TrackedInvocationEvent") // see JBR-4208 // see IDEA-291469 Menu on macOS is invoked inside checkCanceled (PotemkinProgress) && !(eventString.contains(",runnable=com.intellij.openapi.actionSystem.impl.ActionMenu$$Lambda") || eventString.contains(",runnable=com.intellij.platform.ide.menu.MacNativeActionMenuKt$$Lambda"))); }