mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
force cancel update on close toolwindow (IDEA-75080)
This commit is contained in:
@@ -126,6 +126,7 @@ public class SliceManager implements PersistentStateComponent<SliceManager.Store
|
||||
ToolWindow toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(dataFlowToThis ? BACK_TOOLWINDOW_ID : FORTH_TOOLWINDOW_ID);
|
||||
final SlicePanel slicePanel = new SlicePanel(myProject, dataFlowToThis, rootNode, splitByLeafExpressions, toolWindow) {
|
||||
protected void close() {
|
||||
super.close();
|
||||
contentManager.removeContent(myContent[0], true);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.intellij.ide.util.treeView.AbstractTreeNode;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Splitter;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
@@ -351,7 +352,12 @@ public abstract class SlicePanel extends JPanel implements TypeSafeDataProvider,
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void close();
|
||||
protected void close() {
|
||||
final ProgressIndicator progress = myBuilder.getUi().getProgress();
|
||||
if (progress != null) {
|
||||
progress.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
private final class MyRefreshAction extends RefreshAction {
|
||||
private MyRefreshAction(JComponent tree) {
|
||||
|
||||
@@ -6,8 +6,6 @@ import com.intellij.codeInsight.daemon.LightDaemonAnalyzerTestCase;
|
||||
import com.intellij.codeInsight.daemon.impl.HighlightInfo;
|
||||
import com.intellij.ide.util.treeView.AbstractTreeNode;
|
||||
import com.intellij.lang.annotation.HighlightSeverity;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.impl.ToolWindowHeadlessManagerImpl;
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.intellij.ide.actions.CloseTabToolbarAction;
|
||||
import com.intellij.ide.actions.ContextHelpAction;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.SimpleToolWindowPanel;
|
||||
import com.intellij.pom.Navigatable;
|
||||
@@ -98,6 +99,7 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme
|
||||
}
|
||||
|
||||
protected abstract JTree getCurrentTree();
|
||||
protected abstract HierarchyTreeBuilder getCurrentBuilder();
|
||||
|
||||
@Nullable
|
||||
protected abstract PsiElement getElementFromDescriptor(@NotNull HierarchyNodeDescriptor descriptor);
|
||||
@@ -215,6 +217,10 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme
|
||||
|
||||
private final class CloseAction extends CloseTabToolbarAction {
|
||||
public final void actionPerformed(final AnActionEvent e) {
|
||||
final ProgressIndicator progress = getCurrentBuilder().getUi().getProgress();
|
||||
if (progress != null) {
|
||||
progress.cancel();
|
||||
}
|
||||
myContent.getManager().removeContent(myContent, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -438,6 +438,10 @@ public class AbstractTreeUi {
|
||||
});
|
||||
}
|
||||
|
||||
public ProgressIndicator getProgress() {
|
||||
return myProgress;
|
||||
}
|
||||
|
||||
private void releaseNow() {
|
||||
try {
|
||||
acquireLock();
|
||||
|
||||
Reference in New Issue
Block a user