From f9a25a44b56d6afc75bb723f9088d781515f84bf Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 24 May 2012 13:24:16 +0200 Subject: [PATCH] re-enable action groups when their children become visible --- .../completion/actions/CodeCompletionGroup.java | 5 +++++ .../intellij/openapi/actionSystem/ActionGroup.java | 4 ++++ .../intellij/openapi/actionSystem/impl/Utils.java | 14 +++++++------- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/CodeCompletionGroup.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/CodeCompletionGroup.java index b4be2de99a73..15c2da2bbc25 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/CodeCompletionGroup.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/CodeCompletionGroup.java @@ -47,4 +47,9 @@ public class CodeCompletionGroup extends DefaultActionGroup implements DumbAware presentation.setEnabled(true); } + + @Override + public boolean disableIfNoVisibleChildren() { + return false; + } } diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/ActionGroup.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/ActionGroup.java index bfc4375287c2..df23e12b780f 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/ActionGroup.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/ActionGroup.java @@ -188,4 +188,8 @@ public abstract class ActionGroup extends AnAction { public boolean hideIfNoVisibleChildren() { return false; } + + public boolean disableIfNoVisibleChildren() { + return true; + } } diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/Utils.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/Utils.java index 056870f32628..0927854b75dd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/Utils.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/Utils.java @@ -130,14 +130,14 @@ public class Utils{ if (child instanceof ActionGroup) { ActionGroup actionGroup = (ActionGroup)child; if (actionGroup.isPopup()) { // popup menu has its own presentation - // disable group if it contains no visible actions - final boolean visibleChildren = hasVisibleChildren(actionGroup, presentationFactory, context, place); - if (actionGroup.hideIfNoVisibleChildren() && !visibleChildren) { - continue; - } - if (!actionGroup.canBePerformed(context) && !visibleChildren) { - presentation.setEnabled(false); + if (actionGroup.disableIfNoVisibleChildren()) { + final boolean visibleChildren = hasVisibleChildren(actionGroup, presentationFactory, context, place); + if (actionGroup.hideIfNoVisibleChildren() && !visibleChildren) { + continue; + } + presentation.setEnabled(actionGroup.canBePerformed(context) || visibleChildren); } + list.add(child); } else {