From 7c1a46a53e830fa990be073673c01299ee971f35 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 13 Jun 2025 18:07:17 +0200 Subject: [PATCH] IJPL-189392 ApplicationActivationStateManager - use strict ui dispatcher to update state, and then relax ui dispatcher to fire event GitOrigin-RevId: 04d20a826e6c8545d507f3f0e3d835492c3810e9 --- .../com/intellij/ide/ApplicationActivationStateManager.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/ApplicationActivationStateManager.kt b/platform/platform-impl/src/com/intellij/ide/ApplicationActivationStateManager.kt index 4a72acbc59ca..d845c4112b89 100644 --- a/platform/platform-impl/src/com/intellij/ide/ApplicationActivationStateManager.kt +++ b/platform/platform-impl/src/com/intellij/ide/ApplicationActivationStateManager.kt @@ -57,7 +57,7 @@ object ApplicationActivationStateManager { delayedDeactivatedJob?.cancel() delayedDeactivatedJob = app.getCoroutineScope().launch(CoroutineName("ApplicationDeactivation")) { delay(Registry.intValue("application.deactivation.timeout", 1_500).milliseconds) - withContext(Dispatchers.EDT + ModalityState.any().asContextElement()) { + withContext(Dispatchers.ui(UiDispatcherKind.STRICT) + ModalityState.any().asContextElement()) { if (state != ApplicationActivationStateManagerState.DEACTIVATING) { return@withContext } @@ -67,7 +67,10 @@ object ApplicationActivationStateManager { val ideFrame = getIdeFrameFromWindow(window) if (ideFrame != null) { // getIdeFrameFromWindow returns something from a UI tree, so, if not null, it must be Window - app.getMessageBus().syncPublisher(ApplicationActivationListener.TOPIC).delayedApplicationDeactivated(ideFrame as Window) + val publisher = app.getMessageBus().syncPublisher(ApplicationActivationListener.TOPIC) + withContext(Dispatchers.ui(UiDispatcherKind.RELAX)) { + publisher.delayedApplicationDeactivated(ideFrame as Window) + } } } }