diff -r 1b35c300278a openide.loaders/src/org/openide/awt/MenuBar.java --- a/openide.loaders/src/org/openide/awt/MenuBar.java Wed Apr 22 12:21:54 2009 +0200 +++ b/openide.loaders/src/org/openide/awt/MenuBar.java Wed Apr 22 12:42:47 2009 +0200 @@ -78,6 +78,7 @@ import org.openide.nodes.NodeMemberEvent; import org.openide.nodes.NodeReorderEvent; import org.openide.util.Exceptions; +import org.openide.util.ImageUtilities; import org.openide.util.NbBundle; import org.openide.util.Task; import org.openide.util.Utilities; @@ -506,15 +507,24 @@ } private void updateProps() { - if (master.isValid()) { - // set the text and be aware of mnemonics - Node n = master.getNodeDelegate (); - Mnemonics.setLocalizedText(this, n.getDisplayName()); - if (icon) setIcon (new ImageIcon ( - n.getIcon (java.beans.BeanInfo.ICON_COLOR_16x16))); - } else { - setText(master.getName()); - setIcon(null); + Object prev = DONT_BLOCK.get(); + try { + DONT_BLOCK.set(Boolean.TRUE); + if (master.isValid()) { + // set the text and be aware of mnemonics + Node n = master.getNodeDelegate (); + Mnemonics.setLocalizedText(this, n.getDisplayName()); + if (icon) { + setIcon (ImageUtilities.image2Icon( + n.getIcon (java.beans.BeanInfo.ICON_COLOR_16x16) + )); + } + } else { + setText(master.getName()); + setIcon(null); + } + } finally { + DONT_BLOCK.set(prev); } } @@ -554,7 +564,6 @@ selected = true; doInitialize(); dynaModel.checkSubmenu(this); - } } @@ -576,8 +585,12 @@ // } // super.setPopupMenuVisible(b); // } - + + private static ThreadLocal DONT_BLOCK = new ThreadLocal(); private void doInitialize() { + if (Boolean.TRUE.equals(DONT_BLOCK.get())) { + return; + } slave.waitFinishedSuper(); }