From e0cfbf28db492b8e87b4241d25d068a0dbae504d Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Thu, 20 Oct 2016 21:56:59 +0300 Subject: [PATCH] Hide disabled and invisible actions from "Find Action..." result list --- .../intellij/ide/actions/GotoActionAction.java | 15 +++++++++++++++ .../ide/util/gotoByName/ChooseByNameBase.java | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java b/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java index 1b4d89f9d706..4799415d79cb 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java @@ -55,6 +55,7 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; import java.awt.event.*; +import java.util.Iterator; import java.util.Set; public class GotoActionAction extends GotoActionBase implements DumbAware { @@ -97,6 +98,20 @@ public class GotoActionAction extends GotoActionBase implements DumbAware { } final Disposable disposable = Disposer.newDisposable(); final ChooseByNamePopup popup = new ChooseByNamePopup(project, model, new GotoActionItemProvider(model), oldPopup, initialText, false, initialIndex) { + @Override + protected void filterInEDT(Set elements) { + for (Iterator iterator = elements.iterator(); iterator.hasNext(); ) { + Object o = iterator.next(); + if (o instanceof GotoActionModel.MatchedValue) { + Comparable value = ((GotoActionModel.MatchedValue)o).value; + if (value instanceof GotoActionModel.ActionWrapper) { + GotoActionModel.ActionWrapper wrapper = (GotoActionModel.ActionWrapper)value; + if (!wrapper.getPresentation().isEnabled() || !wrapper.getPresentation().isVisible()) iterator.remove(); + } + } + } + } + @Override protected void initUI(Callback callback, ModalityState modalityState, boolean allowMultipleSelection) { super.initUI(callback, modalityState, allowMultipleSelection); diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java index b71a4a021d3d..5bc6dca578d4 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java @@ -1467,6 +1467,9 @@ public abstract class ChooseByNameBase { return panel; } + protected void filterInEDT(Set elements) { + } + private class CalcElementsThread extends ReadTask { private final String myPattern; private final boolean myCheckboxState; @@ -1518,6 +1521,8 @@ public abstract class ChooseByNameBase { showCard(cardToShow, 0); + filterInEDT(filtered); + myCallback.consume(filtered); } }, myModalityState);