@@ -183,15 +183,6 @@ public void windowClosing(WindowEvent e) {
183
183
addWindowListener (new WindowAdapter () {
184
184
public void windowActivated (WindowEvent e ) {
185
185
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 );
195
186
}
196
187
197
188
// added for 1.0.5
@@ -488,7 +479,23 @@ protected void applyPreferences() {
488
479
489
480
protected void buildMenuBar () throws Exception {
490
481
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
+
492
499
menubar .add (buildEditMenu ());
493
500
494
501
final JMenu sketchMenu = new JMenu (_ ("Sketch" ));
@@ -504,7 +511,27 @@ public void menuSelected(MenuEvent e) {
504
511
buildSketchMenu (sketchMenu );
505
512
menubar .add (sketchMenu );
506
513
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
+
508
535
menubar .add (buildHelpMenu ());
509
536
setJMenuBar (menubar );
510
537
}
0 commit comments