IDEA-161165 Per Project Modality: when Commit or Push dialog is shown in one IDEA window, Code Analyzing hangs with 99% completed in the other window

This commit is contained in:
Denis Fokin
2016-09-14 13:22:36 +03:00
parent 28c8d7a22f
commit 1cae7748db
2 changed files with 5 additions and 3 deletions
@@ -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);
@@ -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() {