diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/KeymapImpl.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/KeymapImpl.java index 6e384246fcaf..45a4a680d373 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/KeymapImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/KeymapImpl.java @@ -219,7 +219,7 @@ public class KeymapImpl implements Keymap, ExternalizableScheme { } list.add(shortcut); - if (checkParentShortcut && myParent != null && areShortcutsEqual(getParentShortcuts(actionId), list.toArray(new Shortcut[list.size()]))) { + if (checkParentShortcut && myParent != null && areShortcutsEqual(getParentShortcuts(actionId), getShortcuts(actionId))) { myActionId2ListOfShortcuts.remove(actionId); } myKeystroke2ListOfIds = null; @@ -494,6 +494,11 @@ public class KeymapImpl implements Keymap, ExternalizableScheme { } public Shortcut[] getShortcuts(String actionId) { + KeymapManagerEx keymapManager = getKeymapManager(); + if (keymapManager.getBoundActions().contains(actionId)) { + return getShortcuts(keymapManager.getActionBinding(actionId)); + } + LinkedHashSet shortcuts = myActionId2ListOfShortcuts.get(actionId); if (shortcuts == null) { @@ -501,11 +506,6 @@ public class KeymapImpl implements Keymap, ExternalizableScheme { return getParentShortcuts(actionId); } else { - KeymapManagerEx keymapManager = getKeymapManager(); - if (keymapManager.getBoundActions().contains(actionId)) { - return getShortcuts(keymapManager.getActionBinding(actionId)); - } - return ourEmptyShortcutsArray; } }