don't leak project via action listener in change list browser (IDEA-107996)

This commit is contained in:
peter
2013-05-29 18:07:27 +02:00
parent a7d593037f
commit 9b760e6b8e
3 changed files with 7 additions and 3 deletions
@@ -261,7 +261,7 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj
myBrowser = browser;
myBrowserExtender = browser;
} else {
MultipleChangeListBrowser browser = new MultipleChangeListBrowser(project, changeLists, changes, initialSelection, true, true,
MultipleChangeListBrowser browser = new MultipleChangeListBrowser(project, changeLists, changes, getDisposable(), initialSelection, true, true,
new Runnable() {
public void run() {
updateWarning();
@@ -23,6 +23,7 @@
package com.intellij.openapi.vcs.changes.ui;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.ex.AnActionListener;
import com.intellij.openapi.application.ApplicationManager;
@@ -58,15 +59,18 @@ public class MultipleChangeListBrowser extends ChangesBrowser {
private Map<Change, LocalChangeList> myChangeListsMap;
private final ChangesBrowserExtender myExtender;
private final Disposable myParentDisposable;
private final Runnable myRebuildListListener;
// todo terrible constructor
public MultipleChangeListBrowser(final Project project, final List<? extends ChangeList> changeLists, final List<Change> changes,
Disposable parentDisposable,
final ChangeList initialListSelection,
final boolean capableOfExcludingChanges,
final boolean highlightProblems, final Runnable rebuildListListener, @Nullable final Runnable inclusionListener,
final AnAction... additionalActions) {
super(project, changeLists, changes, initialListSelection, capableOfExcludingChanges, highlightProblems, inclusionListener, MyUseCase.LOCAL_CHANGES, null);
myParentDisposable = parentDisposable;
myRebuildListListener = rebuildListListener;
myChangeListChooser = new ChangeListChooser(changeLists);
@@ -215,7 +219,7 @@ public class MultipleChangeListBrowser extends ChangesBrowser {
rebuildList();
}
}
});
}, myParentDisposable);
moveAction.registerCustomShortcutSet(CommonShortcuts.getMove(), myViewer);
toolBarGroup.add(moveAction);
@@ -104,7 +104,7 @@ public class RollbackChangesDialog extends DialogWrapper {
}
}
};
myBrowser = new MultipleChangeListBrowser(project, changeLists, changes, null, true, true, myListChangeListener, myListChangeListener);
myBrowser = new MultipleChangeListBrowser(project, changeLists, changes, getDisposable(), null, true, true, myListChangeListener, myListChangeListener);
myOperationName = operationNameByChanges(project, changes);
setOKButtonText(myOperationName);