mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-319883 Dispose old models in package dependencies
Since now a model involves an Invoker, it's not a good idea to keep these models around when they're no longer needed. GitOrigin-RevId: 3210aa491a6a60e9193ef2938556d9251f67f0f4
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b76c8cc36f
commit
b9f01f1936
@@ -363,12 +363,20 @@ public final class DependenciesPanel extends JPanel implements Disposable, DataP
|
||||
}
|
||||
}
|
||||
deps.removeAll(scope);
|
||||
myRightTreeExpansionMonitor.freeze();
|
||||
myRightTree.setModel(buildTreeModel(deps, myRightTreeMarker));
|
||||
myRightTreeExpansionMonitor.restore();
|
||||
replaceModel(myRightTree, buildTreeModel(deps, myRightTreeMarker), myRightTreeExpansionMonitor);
|
||||
expandFirstLevel(myRightTree);
|
||||
}
|
||||
|
||||
private static void replaceModel(@NotNull MyTree tree, @NotNull AsyncTreeModel model, @NotNull TreeExpansionMonitor<?> monitor) {
|
||||
monitor.freeze();
|
||||
var oldModel = tree.getModel();
|
||||
if (oldModel instanceof Disposable disposable) {
|
||||
Disposer.dispose(disposable);
|
||||
}
|
||||
tree.setModel(model);
|
||||
monitor.restore();
|
||||
}
|
||||
|
||||
private ActionGroup createTreePopupActions(boolean isRightTree) {
|
||||
DefaultActionGroup group = new DefaultActionGroup();
|
||||
final ActionManager actionManager = ActionManager.getInstance();
|
||||
@@ -398,9 +406,7 @@ public final class DependenciesPanel extends JPanel implements Disposable, DataP
|
||||
|
||||
private void updateLeftTreeModel() {
|
||||
Set<PsiFile> psiFiles = myDependencies.keySet();
|
||||
myLeftTreeExpansionMonitor.freeze();
|
||||
myLeftTree.setModel(buildTreeModel(psiFiles, myLeftTreeMarker));
|
||||
myLeftTreeExpansionMonitor.restore();
|
||||
replaceModel(myLeftTree, buildTreeModel(psiFiles, myLeftTreeMarker), myLeftTreeExpansionMonitor);
|
||||
expandFirstLevel(myLeftTree);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user