re-enable action groups when their children become visible

This commit is contained in:
peter
2012-05-24 15:36:10 +02:00
parent 38e6f7f3c3
commit f9a25a44b5
3 changed files with 16 additions and 7 deletions
@@ -47,4 +47,9 @@ public class CodeCompletionGroup extends DefaultActionGroup implements DumbAware
presentation.setEnabled(true);
}
@Override
public boolean disableIfNoVisibleChildren() {
return false;
}
}
@@ -188,4 +188,8 @@ public abstract class ActionGroup extends AnAction {
public boolean hideIfNoVisibleChildren() {
return false;
}
public boolean disableIfNoVisibleChildren() {
return true;
}
}
@@ -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 {