mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
To avoid memory leak from AWT implementation, unregister action with custom shortcut attached to root pane (IDEA-143990)
This commit is contained in:
@@ -24,6 +24,7 @@ import com.intellij.find.FindSettings;
|
||||
import com.intellij.find.actions.ShowUsagesAction;
|
||||
import com.intellij.ide.util.scopeChooser.ScopeChooserCombo;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
@@ -647,7 +648,7 @@ public class FindDialog extends DialogWrapper {
|
||||
pane.insertTab("Options", null, optionsPanel, null, 0);
|
||||
pane.insertTab(PREVIEW_TITLE, null, myPreviewSplitter, null, RESULTS_PREVIEW_TAB_INDEX);
|
||||
myContent = pane;
|
||||
AnAction anAction = new AnAction() {
|
||||
final AnAction anAction = new AnAction() {
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
int selectedIndex = myContent.getSelectedIndex();
|
||||
@@ -656,7 +657,16 @@ public class FindDialog extends DialogWrapper {
|
||||
};
|
||||
|
||||
final ShortcutSet shortcutSet = ActionManager.getInstance().getAction(IdeActions.ACTION_SWITCHER).getShortcutSet();
|
||||
anAction.registerCustomShortcutSet(shortcutSet, getRootPane());
|
||||
final JRootPane rootPane = getRootPane();
|
||||
|
||||
anAction.registerCustomShortcutSet(shortcutSet, rootPane);
|
||||
Disposer.register(myDisposable, new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
anAction.unregisterCustomShortcutSet(rootPane);
|
||||
}
|
||||
});
|
||||
|
||||
if (myPreviewResultsTabWasSelected) myContent.setSelectedIndex(RESULTS_PREVIEW_TAB_INDEX);
|
||||
|
||||
return pane.getComponent();
|
||||
|
||||
Reference in New Issue
Block a user