1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-03-13 10:29:35 +01:00

Fixing longstanding bug that made File and Tools menu items overlap "sometimes"

This commit is contained in:
Federico Fissore 2015-05-07 16:52:25 +02:00
parent 50a5034176
commit 9d92baa14c

View File

@ -183,15 +183,6 @@ public class Editor extends JFrame implements RunnerListener {
addWindowListener(new WindowAdapter() {
public void windowActivated(WindowEvent e) {
base.handleActivated(Editor.this);
// re-add the sub-menus that are shared by all windows
fileMenu.insert(sketchbookMenu, 2);
fileMenu.insert(examplesMenu, 3);
int offset = 0;
for (JMenu menu : base.getBoardsCustomMenus()) {
toolsMenu.insert(menu, numTools + offset);
offset++;
}
toolsMenu.insert(serialMenu, numTools + offset);
}
// added for 1.0.5
@ -488,7 +479,23 @@ public class Editor extends JFrame implements RunnerListener {
protected void buildMenuBar() throws Exception {
JMenuBar menubar = new JMenuBar();
menubar.add(buildFileMenu());
final JMenu fileMenu = buildFileMenu();
fileMenu.addMenuListener(new StubMenuListener() {
@Override
public void menuSelected(MenuEvent e) {
List<Component> components = Arrays.asList(fileMenu.getComponents());
if (!components.contains(sketchbookMenu)) {
fileMenu.insert(sketchbookMenu, 2);
}
if (!components.contains(sketchbookMenu)) {
fileMenu.insert(examplesMenu, 3);
}
fileMenu.revalidate();
validate();
}
});
menubar.add(fileMenu);
menubar.add(buildEditMenu());
final JMenu sketchMenu = new JMenu(_("Sketch"));
@ -504,7 +511,27 @@ public class Editor extends JFrame implements RunnerListener {
buildSketchMenu(sketchMenu);
menubar.add(sketchMenu);
menubar.add(buildToolsMenu());
final JMenu toolsMenu = buildToolsMenu();
toolsMenu.addMenuListener(new StubMenuListener() {
@Override
public void menuSelected(MenuEvent e) {
List<Component> components = Arrays.asList(fileMenu.getComponents());
int offset = 0;
for (JMenu menu : base.getBoardsCustomMenus()) {
if (!components.contains(menu)) {
toolsMenu.insert(menu, numTools + offset);
offset++;
}
}
if (!components.contains(serialMenu)) {
toolsMenu.insert(serialMenu, numTools + offset);
}
toolsMenu.revalidate();
validate();
}
});
menubar.add(toolsMenu);
menubar.add(buildHelpMenu());
setJMenuBar(menubar);
}