@@ -183,15 +183,6 @@ public void windowClosing(WindowEvent e) {
183183 addWindowListener (new WindowAdapter () {
184184 public void windowActivated (WindowEvent e ) {
185185 base .handleActivated (Editor .this );
186- // re-add the sub-menus that are shared by all windows
187- fileMenu .insert (sketchbookMenu , 2 );
188- fileMenu .insert (examplesMenu , 3 );
189- int offset = 0 ;
190- for (JMenu menu : base .getBoardsCustomMenus ()) {
191- toolsMenu .insert (menu , numTools + offset );
192- offset ++;
193- }
194- toolsMenu .insert (serialMenu , numTools + offset );
195186 }
196187
197188 // added for 1.0.5
@@ -488,7 +479,23 @@ protected void applyPreferences() {
488479
489480 protected void buildMenuBar () throws Exception {
490481 JMenuBar menubar = new JMenuBar ();
491- menubar .add (buildFileMenu ());
482+ final JMenu fileMenu = buildFileMenu ();
483+ fileMenu .addMenuListener (new StubMenuListener () {
484+ @ Override
485+ public void menuSelected (MenuEvent e ) {
486+ List <Component > components = Arrays .asList (fileMenu .getComponents ());
487+ if (!components .contains (sketchbookMenu )) {
488+ fileMenu .insert (sketchbookMenu , 2 );
489+ }
490+ if (!components .contains (sketchbookMenu )) {
491+ fileMenu .insert (examplesMenu , 3 );
492+ }
493+ fileMenu .revalidate ();
494+ validate ();
495+ }
496+ });
497+ menubar .add (fileMenu );
498+
492499 menubar .add (buildEditMenu ());
493500
494501 final JMenu sketchMenu = new JMenu (_ ("Sketch" ));
@@ -504,7 +511,27 @@ public void menuSelected(MenuEvent e) {
504511 buildSketchMenu (sketchMenu );
505512 menubar .add (sketchMenu );
506513
507- menubar .add (buildToolsMenu ());
514+ final JMenu toolsMenu = buildToolsMenu ();
515+ toolsMenu .addMenuListener (new StubMenuListener () {
516+ @ Override
517+ public void menuSelected (MenuEvent e ) {
518+ List <Component > components = Arrays .asList (fileMenu .getComponents ());
519+ int offset = 0 ;
520+ for (JMenu menu : base .getBoardsCustomMenus ()) {
521+ if (!components .contains (menu )) {
522+ toolsMenu .insert (menu , numTools + offset );
523+ offset ++;
524+ }
525+ }
526+ if (!components .contains (serialMenu )) {
527+ toolsMenu .insert (serialMenu , numTools + offset );
528+ }
529+ toolsMenu .revalidate ();
530+ validate ();
531+ }
532+ });
533+ menubar .add (toolsMenu );
534+
508535 menubar .add (buildHelpMenu ());
509536 setJMenuBar (menubar );
510537 }
0 commit comments