Skip to content

Commit 50a5034

Browse files
author
Federico Fissore
committed
Ensuring sketch menu is properly rendered when editor windows gains/loses focus
1 parent fd6d956 commit 50a5034

File tree

2 files changed

+40
-17
lines changed

2 files changed

+40
-17
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package cc.arduino.view;
2+
3+
import javax.swing.event.MenuEvent;
4+
import javax.swing.event.MenuListener;
5+
6+
public class StubMenuListener implements MenuListener {
7+
8+
@Override
9+
public void menuSelected(MenuEvent e) {
10+
}
11+
12+
@Override
13+
public void menuDeselected(MenuEvent e) {
14+
}
15+
16+
@Override
17+
public void menuCanceled(MenuEvent e) {
18+
}
19+
20+
}

app/src/processing/app/Editor.java

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import cc.arduino.packages.MonitorFactory;
2626

27+
import cc.arduino.view.StubMenuListener;
2728
import com.jcraft.jsch.JSchException;
2829
import jssc.SerialPortException;
2930
import processing.app.debug.*;
@@ -92,7 +93,6 @@ public class Editor extends JFrame implements RunnerListener {
9293

9394
// file, sketch, and tools menus for re-inserting items
9495
JMenu fileMenu;
95-
JMenu sketchMenu;
9696
JMenu toolsMenu;
9797

9898
int numTools = 0;
@@ -186,7 +186,6 @@ public void windowActivated(WindowEvent e) {
186186
// re-add the sub-menus that are shared by all windows
187187
fileMenu.insert(sketchbookMenu, 2);
188188
fileMenu.insert(examplesMenu, 3);
189-
buildSketchMenu();
190189
int offset = 0;
191190
for (JMenu menu : base.getBoardsCustomMenus()) {
192191
toolsMenu.insert(menu, numTools + offset);
@@ -200,7 +199,6 @@ public void windowActivated(WindowEvent e) {
200199
public void windowDeactivated(WindowEvent e) {
201200
fileMenu.remove(sketchbookMenu);
202201
fileMenu.remove(examplesMenu);
203-
buildSketchMenu();
204202
List<Component> toolsMenuItemsToRemove = new LinkedList<Component>();
205203
for (Component menuItem : toolsMenu.getMenuComponents()) {
206204
if (menuItem instanceof JComponent) {
@@ -492,7 +490,20 @@ protected void buildMenuBar() throws Exception {
492490
JMenuBar menubar = new JMenuBar();
493491
menubar.add(buildFileMenu());
494492
menubar.add(buildEditMenu());
495-
menubar.add(buildSketchMenu());
493+
494+
final JMenu sketchMenu = new JMenu(_("Sketch"));
495+
sketchMenu.addMenuListener(new StubMenuListener() {
496+
497+
@Override
498+
public void menuSelected(MenuEvent e) {
499+
buildSketchMenu(sketchMenu);
500+
sketchMenu.revalidate();
501+
validate();
502+
}
503+
});
504+
buildSketchMenu(sketchMenu);
505+
menubar.add(sketchMenu);
506+
496507
menubar.add(buildToolsMenu());
497508
menubar.add(buildHelpMenu());
498509
setJMenuBar(menubar);
@@ -609,12 +620,8 @@ public void actionPerformed(ActionEvent e) {
609620
}
610621

611622

612-
protected JMenu buildSketchMenu() {
613-
if (sketchMenu == null) {
614-
sketchMenu = new JMenu(_("Sketch"));
615-
} else {
616-
sketchMenu.removeAll();
617-
}
623+
protected void buildSketchMenu(JMenu sketchMenu) {
624+
sketchMenu.removeAll();
618625

619626
JMenuItem item = newJMenuItem(_("Verify / Compile"), 'R');
620627
item.addActionListener(new ActionListener() {
@@ -623,7 +630,7 @@ public void actionPerformed(ActionEvent e) {
623630
}
624631
});
625632
sketchMenu.add(item);
626-
633+
627634
item = newJMenuItem(_("Upload"), 'U');
628635
item.addActionListener(new ActionListener() {
629636
public void actionPerformed(ActionEvent e) {
@@ -682,8 +689,6 @@ public void actionPerformed(ActionEvent e) {
682689
}
683690
});
684691
sketchMenu.add(item);
685-
686-
return sketchMenu;
687692
}
688693

689694

@@ -733,9 +738,7 @@ public void actionPerformed(ActionEvent e) {
733738
});
734739
toolsMenu.add(item);
735740

736-
toolsMenu.addMenuListener(new MenuListener() {
737-
public void menuCanceled(MenuEvent e) {}
738-
public void menuDeselected(MenuEvent e) {}
741+
toolsMenu.addMenuListener(new StubMenuListener() {
739742
public void menuSelected(MenuEvent e) {
740743
//System.out.println("Tools menu selected.");
741744
populatePortMenu();
@@ -2025,7 +2028,7 @@ public void handleRun(final boolean verbose, Runnable verboseHandler, Runnable n
20252028
// placed on the event thread and causes a hang--bad idea all around.
20262029
new Thread(verbose ? verboseHandler : nonVerboseHandler).start();
20272030
}
2028-
2031+
20292032
class BuildHandler implements Runnable {
20302033

20312034
private final boolean verbose;

0 commit comments

Comments
 (0)