Bug 204788 [Contributions] Second context menu created from MenuManager does not show
Build ID: I20070621-1340 Steps To Reproduce: 1. Create a MenuManager m with some menu items. 2. Call c.setMenu(m.createContextMenu(c)) on some Control c. 3. Observe that right-clicking on c produces the menu. 4. Dispose the menu. 5. Repeat step 2. (Alternatively, install m on a different control.) 6. The menu now doesn't appear. More information: I'm using Linux/GTK. The debugger tells me that the menu is created and handleAboutToShow() is called. I can't see a problem in the Java code, but nothing appears on the screen. Maybe something is wrong in the native code? If I use a different MenuManager to create the second menu, it works fine.
bundles/org.eclipse.jface/src/org/eclipse/jface/action/MenuManager.java
Object data = mi[i].getData();
                    if (data == null || !clean.contains(data)) {
                        mi[i].dispose();
                    } else if (data instanceof IContributionItem
                            && ((IContributionItem) data).isDynamic()
                            && ((IContributionItem) data).isDirty()) {
                        mi[i].dispose();
                    }
                }
                
                mi = menu.getItems();
                int srcIx = 0;
                int destIx = 0;
                for (Iterator e = clean.iterator(); e.hasNext();) {
                    IContributionItem src = (IContributionItem) e.next();
                    IContributionItem dest;
                    
                    if (srcIx < mi.length) {
						dest = (IContributionItem) mi[srcIx].getData();
					} else {
						dest = null;
					}
                    if (dest != null && src.equals(dest)) {
                        srcIx++;
                        destIx++;
                    } else if (dest != null && dest.isSeparator()
                            && src.isSeparator()) {
                        mi[srcIx].setData(src);
                        srcIx++;
                        destIx++;