From 14c3a4de433a65e960ddcdb7f4c526af60a38b06 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 28 Jun 2016 21:07:06 +0300 Subject: [PATCH] diff: do not put duplicates into ActionGroup fix exception if DiffViewerWrapper and wrapped DiffViewer have same action on toolbar --- .../src/com/intellij/diff/util/DiffUtil.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java index 066557c70312..8c586735f14d 100644 --- a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java +++ b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java @@ -328,18 +328,19 @@ public class DiffUtil { } public static void addActionBlock(@NotNull DefaultActionGroup group, AnAction... actions) { - if (actions.length == 0) return; - if (group.getChildrenCount() != 0) group.addSeparator(); - - for (AnAction action : actions) { - if (action != null) group.add(action); - } + addActionBlock(group, Arrays.asList(actions)); } public static void addActionBlock(@NotNull DefaultActionGroup group, @Nullable List actions) { if (actions == null || actions.isEmpty()) return; - if (group.getChildrenCount() != 0) group.addSeparator(); - group.addAll(actions); + group.addSeparator(); + + AnAction[] children = group.getChildren(null); + for (AnAction action : actions) { + if (!ArrayUtil.contains(action, children)) { + group.add(action); + } + } } @NotNull