mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
IJPL-164850 Do not unstub dynamic groups in Keymap
(cherry picked from commit 6f8eb094820a2f243f4a3489dbaa65877dff8a9a) IJ-CR-147493 GitOrigin-RevId: 61714ff917e6cf26ba1f894e945be58da8fe6983
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d5b6063609
commit
843c5961b2
@@ -14,7 +14,6 @@ import com.intellij.idea.ActionsBundle;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.actionSystem.ex.ActionManagerEx;
|
||||
import com.intellij.openapi.actionSystem.ex.QuickList;
|
||||
import com.intellij.openapi.actionSystem.impl.ActionGroupStub;
|
||||
import com.intellij.openapi.actionSystem.impl.ActionManagerImpl;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.PluginDescriptor;
|
||||
@@ -169,7 +168,7 @@ public final class ActionsTreeUtil {
|
||||
ActionManager actionManager = ActionManager.getInstance();
|
||||
Group group = new Group(getMainMenuTitle(), IdeActions.GROUP_MAIN_MENU, AllIcons.Nodes.KeymapMainMenu);
|
||||
ActionGroup mainMenuGroup = (ActionGroup)actionManager.getActionOrStub(IdeActions.GROUP_MAIN_MENU);
|
||||
fillGroupIgnorePopupFlag(mainMenuGroup, group, filtered, actionManager);
|
||||
fillGroupIgnorePopupFlag(mainMenuGroup, group, filtered);
|
||||
return group;
|
||||
}
|
||||
|
||||
@@ -209,9 +208,8 @@ public final class ActionsTreeUtil {
|
||||
|
||||
private static void fillGroupIgnorePopupFlag(ActionGroup actionGroup,
|
||||
Group group,
|
||||
Condition<? super AnAction> filtered,
|
||||
ActionManager actionManager) {
|
||||
AnAction[] mainMenuTopGroups = getActions(actionGroup, actionManager);
|
||||
Condition<? super AnAction> filtered) {
|
||||
AnAction[] mainMenuTopGroups = getActions(actionGroup);
|
||||
for (AnAction action : mainMenuTopGroups) {
|
||||
if (!(action instanceof ActionGroup)) continue;
|
||||
Group subGroup = createGroup((ActionGroup)action, false, filtered);
|
||||
@@ -278,7 +276,7 @@ public final class ActionsTreeUtil {
|
||||
boolean normalizeSeparators) {
|
||||
ActionManager actionManager = ActionManager.getInstance();
|
||||
Group group = new Group(groupName, actionManager.getId(actionGroup), icon);
|
||||
AnAction[] children = getActions(actionGroup, actionManager);
|
||||
AnAction[] children = getActions(actionGroup);
|
||||
for (AnAction action : children) {
|
||||
if (action == null) {
|
||||
LOG.error(groupName + " contains null actions");
|
||||
@@ -340,7 +338,7 @@ public final class ActionsTreeUtil {
|
||||
ActionManager actionManager = ActionManager.getInstance();
|
||||
String groupId = actionManager.getId(actionGroup);
|
||||
Group group = new Group(groupName, groupId, getTemplatePresentation(actionGroup).getIcon());
|
||||
List<AnAction> children = new ArrayList<>(Arrays.asList(getActions(actionGroup, actionManager)));
|
||||
List<AnAction> children = new ArrayList<>(Arrays.asList(getActions(actionGroup)));
|
||||
|
||||
for (ActionUrl actionUrl : actionUrls) {
|
||||
Object component = actionUrl.getComponent();
|
||||
@@ -766,31 +764,16 @@ public final class ActionsTreeUtil {
|
||||
PluginException.logPluginError(LOG, actionGroup + " is not a group", null, group.getClass());
|
||||
return AnAction.EMPTY_ARRAY;
|
||||
}
|
||||
return getActions((ActionGroup)group, actionManager);
|
||||
return getActions((ActionGroup)group);
|
||||
}
|
||||
|
||||
private static AnAction @NotNull [] getActions(@NotNull ActionGroup group, @NotNull ActionManager actionManager) {
|
||||
private static AnAction @NotNull [] getActions(@NotNull ActionGroup group) {
|
||||
try {
|
||||
if (group instanceof ActionGroupStub stub) {
|
||||
AnAction[] stubChildren = stub.getChildActionsOrStubs();
|
||||
if (stubChildren.length > 0) return stubChildren;
|
||||
String actionId = stub.getId();
|
||||
LOG.info("No children in '" + actionId + "' stub. Creating its instance");
|
||||
AnAction unstubbed = actionManager.getAction(actionId);
|
||||
if (unstubbed instanceof ActionGroup g && !(unstubbed instanceof ActionGroupStub)) {
|
||||
return getActions(g, actionManager);
|
||||
}
|
||||
else {
|
||||
PluginException.logPluginError(LOG, "'" + actionId + "' is not an action group. " +
|
||||
unstubbed.getClass().getName(), null, unstubbed.getClass());
|
||||
return AnAction.EMPTY_ARRAY;
|
||||
}
|
||||
}
|
||||
else if (group instanceof DefaultActionGroup g && ActionClassMetaData.isDefaultGetChildren(g)) {
|
||||
if (group instanceof DefaultActionGroup g) {
|
||||
return g.getChildActionsOrStubs();
|
||||
}
|
||||
else {
|
||||
return group.getChildren(null);
|
||||
return AnAction.EMPTY_ARRAY;
|
||||
}
|
||||
}
|
||||
catch (Throwable e) {
|
||||
|
||||
Reference in New Issue
Block a user