diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java index c7f8832fbe0a..bfdd1c389938 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java @@ -57,6 +57,7 @@ import com.intellij.openapi.roots.ModuleRootEvent; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.UserDataHolderEx; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.vcs.*; import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager; import com.intellij.openapi.vfs.VirtualFile; @@ -325,8 +326,8 @@ public class DaemonListeners implements Disposable { ModalityStateListener modalityStateListener = entering -> { // before showing dialog we are in non-modal context yet, and before closing dialog we are still in modal context - boolean inModalContext = LaterInvocator.isInModalContext(); - stopDaemon(inModalContext, "Modality change. Was modal: "+inModalContext); + boolean inModalContext = Registry.is("ide.perProjectModality") || LaterInvocator.isInModalContext(); + stopDaemon(inModalContext, "Modality change. Was modal: " + inModalContext); myDaemonCodeAnalyzer.setUpdateByTimerEnabled(inModalContext); }; LaterInvocator.addModalityStateListener(modalityStateListener,this); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java index dcc33e75c860..f76cdadf0b78 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java @@ -44,6 +44,7 @@ import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Pair; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Functions; @@ -522,7 +523,7 @@ class PassExecutorService implements Disposable { else { log(updateProgress, pass, "Finished but there are passes in the queue: " + threadsToStartCountdown.get()); } - }, ModalityState.stateForComponent(fileEditor.getComponent())); + }, Registry.is("ide.perProjectModality") ? ModalityState.current() : ModalityState.stateForComponent(fileEditor.getComponent())); } protected boolean isDisposed() {