From a17ac837b2efd91a373f2c2c5b307f1059fb1d2b Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Tue, 28 Aug 2012 20:00:46 +0400 Subject: [PATCH] tracking EA-38125 - CME: ActionToolbarImpl.updateAllToolbarsImmediately --- .../actionSystem/impl/ActionToolbarImpl.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java index bd7d8538c6b8..3df3bcc42c8d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java @@ -55,6 +55,7 @@ import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.MouseEvent; import java.util.ArrayList; +import java.util.ConcurrentModificationException; import java.util.LinkedList; import java.util.List; @@ -62,10 +63,17 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.actionSystem.impl.ActionToolbarImpl"); private static List ourToolbars = new LinkedList(); + private static Throwable ourLastModification = null; public static void updateAllToolbarsImmediately() { - for (ActionToolbarImpl toolbar : ourToolbars) { - toolbar.updateActionsImmediately(); + try { + ourLastModification = null; + for (ActionToolbarImpl toolbar : new ArrayList(ourToolbars)) { + toolbar.updateActionsImmediately(); + } + } + catch (ConcurrentModificationException e) { + LOG.error(ourLastModification == null? e : ourLastModification); } } @@ -170,6 +178,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar { @Override public void addNotify() { super.addNotify(); + ourLastModification = new ConcurrentModificationException(); ourToolbars.add(this); myActionManager.addTimerListener(500, myWeakTimerListener); myActionManager.addTransparentTimerListener(500, myWeakTimerListener); @@ -190,6 +199,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar { @Override public void removeNotify() { super.removeNotify(); + ourLastModification = new ConcurrentModificationException(); ourToolbars.remove(this); myActionManager.removeTimerListener(myWeakTimerListener); myActionManager.removeTransparentTimerListener(myWeakTimerListener);