-
Bug
-
Resolution: Won't Fix
-
P3
-
8
-
x86_64
-
linux
FULL PRODUCT VERSION :
1.8.0_102 and additionally verified on _92 and _66
ADDITIONAL OS VERSION INFORMATION :
Ubuntu 16.04
A DESCRIPTION OF THE PROBLEM :
I have an app with a Menubar with two Menus. Each Menu has a single MenuItem. All of the Menus and MenuItems have mnemonicParsing set to the default (true) and a mnemonic applied via the underscore ('_') character.
When I press Alt, I can select the Menu. However, continuing to hold Alt does not allow me to select a MenuItem.
I've seen this example work intermittently, but the larger program that I can't submit has mnemonics that never work.
This program works fine on Windows and mnemonics aren't used on the Mac.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
In my test program, one of the menus is File > Close. The other is Edit > Paste. To reproduce
1. Start the app
2. Holding the Alt key, press the E key. The Edit Menu will be selected.
3. Continuing to hold the Alt key, press the P key. The selecting will go back to the File Menu rather than the Paste MenuItem.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I expected to be able to select a MenuItem with the mneomic.
ACTUAL -
The MenuItem is not selected. Focus seems to go back to the first Menu.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class MnemonicTestApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
MenuBar menubar = new MenuBar();
Menu fileMenu = new Menu("_File");
fileMenu.setMnemonicParsing(true);
MenuItem closeItem = new MenuItem("_Close");
closeItem.setId( "closeItem");
closeItem.setMnemonicParsing(true);
closeItem.setOnAction( this::activate );
fileMenu.getItems().add( closeItem );
Menu editMenu = new Menu("_Edit");
editMenu.setMnemonicParsing(true);
MenuItem pasteItem = new MenuItem("_Paste");
pasteItem.setId( "pasteItem" );
pasteItem.setMnemonicParsing( true );
pasteItem.setOnAction( this::activate );
editMenu.getItems().add( pasteItem );
menubar.getMenus().addAll( fileMenu, editMenu );
VBox vbox = new VBox();
vbox.getChildren().addAll( menubar );
Scene scene = new Scene( vbox, 480, 320 );
primaryStage.setScene( scene );
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
private void activate(Event event) {
System.out.println("source=" + event.getSource());
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Don't use mnemonics.
1.8.0_102 and additionally verified on _92 and _66
ADDITIONAL OS VERSION INFORMATION :
Ubuntu 16.04
A DESCRIPTION OF THE PROBLEM :
I have an app with a Menubar with two Menus. Each Menu has a single MenuItem. All of the Menus and MenuItems have mnemonicParsing set to the default (true) and a mnemonic applied via the underscore ('_') character.
When I press Alt, I can select the Menu. However, continuing to hold Alt does not allow me to select a MenuItem.
I've seen this example work intermittently, but the larger program that I can't submit has mnemonics that never work.
This program works fine on Windows and mnemonics aren't used on the Mac.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
In my test program, one of the menus is File > Close. The other is Edit > Paste. To reproduce
1. Start the app
2. Holding the Alt key, press the E key. The Edit Menu will be selected.
3. Continuing to hold the Alt key, press the P key. The selecting will go back to the File Menu rather than the Paste MenuItem.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I expected to be able to select a MenuItem with the mneomic.
ACTUAL -
The MenuItem is not selected. Focus seems to go back to the first Menu.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class MnemonicTestApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
MenuBar menubar = new MenuBar();
Menu fileMenu = new Menu("_File");
fileMenu.setMnemonicParsing(true);
MenuItem closeItem = new MenuItem("_Close");
closeItem.setId( "closeItem");
closeItem.setMnemonicParsing(true);
closeItem.setOnAction( this::activate );
fileMenu.getItems().add( closeItem );
Menu editMenu = new Menu("_Edit");
editMenu.setMnemonicParsing(true);
MenuItem pasteItem = new MenuItem("_Paste");
pasteItem.setId( "pasteItem" );
pasteItem.setMnemonicParsing( true );
pasteItem.setOnAction( this::activate );
editMenu.getItems().add( pasteItem );
menubar.getMenus().addAll( fileMenu, editMenu );
VBox vbox = new VBox();
vbox.getChildren().addAll( menubar );
Scene scene = new Scene( vbox, 480, 320 );
primaryStage.setScene( scene );
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
private void activate(Event event) {
System.out.println("source=" + event.getSource());
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Don't use mnemonics.