Skip to content

Commit 9d92baa

Browse files
author
Federico Fissore
committed
Fixing longstanding bug that made File and Tools menu items overlap "sometimes"
1 parent 50a5034 commit 9d92baa

File tree

1 file changed

+38
-11
lines changed

1 file changed

+38
-11
lines changed

app/src/processing/app/Editor.java

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)