mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
don't leak project via action listener in change list browser (IDEA-107996)
This commit is contained in:
+1
-1
@@ -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();
|
||||
|
||||
+5
-1
@@ -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);
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user