From 49cd9b57dd3f39b8d967a2fd1406fad7ba0e24d6 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 27 Aug 2018 16:20:20 +0200 Subject: [PATCH 1/2] Fix check for wrong submenu --- app/src/processing/app/Editor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index 9ba3a144b95..c4521e1f106 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -508,7 +508,7 @@ public void menuSelected(MenuEvent e) { if (!components.contains(sketchbookMenu)) { fileMenu.insert(sketchbookMenu, 3); } - if (!components.contains(sketchbookMenu)) { + if (!components.contains(examplesMenu)) { fileMenu.insert(examplesMenu, 4); } fileMenu.revalidate(); From 2f3a561c6158bb92553231e4a02da0cf7a3bc98c Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 27 Aug 2018 16:20:45 +0200 Subject: [PATCH 2/2] Fix rebuild being triggered on every menu open() Fixes #7924 JRE 8u161 made JMenu.insert() MUCH slower on OSX. This exposed a bug lurking there for years; in fact the menu entries were rebuilt every time since JMenu.getComponent() returns an empty list. The correct function is JMenu.getMenuComponents(). In the meantime, also remove sketchbookMenu and examplesMenu being deleted on board change; only their content needs to be updated, not the container itself. --- app/src/processing/app/Editor.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index c4521e1f106..9500ddd695a 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -262,8 +262,6 @@ public void windowActivated(WindowEvent e) { // added for 1.0.5 // http://dev.processing.org/bugs/show_bug.cgi?id=1260 public void windowDeactivated(WindowEvent e) { - fileMenu.remove(sketchbookMenu); - fileMenu.remove(examplesMenu); List toolsMenuItemsToRemove = new LinkedList<>(); for (Component menuItem : toolsMenu.getMenuComponents()) { if (menuItem instanceof JComponent) { @@ -504,7 +502,7 @@ private void buildMenuBar() { fileMenu.addMenuListener(new StubMenuListener() { @Override public void menuSelected(MenuEvent e) { - List components = Arrays.asList(fileMenu.getComponents()); + List components = Arrays.asList(fileMenu.getMenuComponents()); if (!components.contains(sketchbookMenu)) { fileMenu.insert(sketchbookMenu, 3); } @@ -537,7 +535,7 @@ public void menuSelected(MenuEvent e) { toolsMenu.addMenuListener(new StubMenuListener() { @Override public void menuSelected(MenuEvent e) { - List components = Arrays.asList(toolsMenu.getComponents()); + List components = Arrays.asList(toolsMenu.getMenuComponents()); int offset = 0; for (JMenu menu : base.getBoardsCustomMenus()) { if (!components.contains(menu)) {