Skip to content

Commit 25e4ab9

Browse files
committed
8090647: Mnemonics : on windows we should cancel the underscore latch when an app loses focus.
Reviewed-by: angorya, aghaisas
1 parent 315939f commit 25e4ab9

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

modules/javafx.graphics/src/main/java/javafx/scene/Scene.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2123,6 +2123,10 @@ private void setWindowFocused(boolean value) {
21232123
if (windowFocused && accessible != null) {
21242124
accessible.sendNotification(AccessibleAttribute.FOCUS_NODE);
21252125
}
2126+
2127+
if (!windowFocused) {
2128+
getInternalEventDispatcher().getKeyboardShortcutsHandler().setMnemonicsDisplayEnabled(false);
2129+
}
21262130
}
21272131

21282132
/**

modules/javafx.graphics/src/test/java/test/javafx/scene/SceneTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525

2626
package test.javafx.scene;
2727

28+
import com.sun.javafx.scene.KeyboardShortcutsHandler;
2829
import com.sun.javafx.scene.NodeHelper;
30+
import com.sun.javafx.scene.SceneEventDispatcher;
2931
import com.sun.javafx.scene.SceneHelper;
3032
import javafx.beans.value.ChangeListener;
3133
import javafx.beans.value.ObservableValue;
@@ -1065,4 +1067,29 @@ public void testAddNullPostLayoutPulseListener() {
10651067

10661068
JMemoryBuddy.assertCollectable(ref);
10671069
}
1070+
1071+
@Test
1072+
public void sceneShouldSet_MnemonicsDisplayEnabled_ToFalseWhenWindowFocusIsLost() {
1073+
Group root = new Group();
1074+
1075+
root.setFocusTraversable(true);
1076+
1077+
Scene scene = new Scene(root);
1078+
SceneEventDispatcher dispatcher = (SceneEventDispatcher) scene.getEventDispatcher();
1079+
KeyboardShortcutsHandler keyboardShortcutsHandler = dispatcher.getKeyboardShortcutsHandler();
1080+
1081+
stage.setScene(scene);
1082+
stage.show();
1083+
stage.requestFocus();
1084+
1085+
assertFalse(keyboardShortcutsHandler.isMnemonicsDisplayEnabled());
1086+
1087+
keyboardShortcutsHandler.setMnemonicsDisplayEnabled(true);
1088+
1089+
assertTrue(keyboardShortcutsHandler.isMnemonicsDisplayEnabled());
1090+
1091+
stage.close();
1092+
1093+
assertFalse(keyboardShortcutsHandler.isMnemonicsDisplayEnabled());
1094+
}
10681095
}

0 commit comments

Comments
 (0)