Fix menu input: name the VSMX script 'main' so button events resolve

Button events in the RCO are named 'script:/main/mm_on_focus_up' etc., but
the interpreter was constructed with name 'menu', so interpretScript built a
'script:/menu/' prefix that never matched and button navigation/selection
silently did nothing. Also route key presses through a scene event filter so
arrow keys reach the handler before JavaFX focus traversal.
This commit is contained in:
2026-09-16 09:04:02 -04:00
parent 1a4330f291
commit 9f0b25acfc
2 changed files with 8 additions and 5 deletions
@@ -429,7 +429,7 @@ public final class Main {
byte[] vsmxData = rco.vsmxData();
if (vsmxData != null) {
Vsmx vsmx = new Vsmx(vsmxData, "menu");
Vsmx vsmx = new Vsmx(vsmxData, "main");
System.out.printf("vsmx: %d code groups, %d texts, %d props, %d names%n",
vsmx.codes().length, vsmx.texts().length, vsmx.properties().length, vsmx.names().length);
@@ -99,12 +99,15 @@ public final class PlayerApp extends Application {
stage.setMinHeight(90);
stage.show();
scene.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.F11) {
scene.addEventFilter(javafx.scene.input.KeyEvent.KEY_PRESSED, event -> {
KeyCode code = event.getCode();
if (code == KeyCode.F11) {
stage.setFullScreen(!stage.isFullScreen());
event.consume();
return;
}
handleKey(event.getCode());
handleKey(code);
event.consume();
});
if (isoPath != null) {
@@ -179,7 +182,7 @@ public final class PlayerApp extends Application {
return;
}
Vsmx vsmx = new Vsmx(rco.vsmxData(), "menu");
Vsmx vsmx = new Vsmx(rco.vsmxData(), "main");
VsmxInterpreter interpreter = new VsmxInterpreter();
interpreter.setVsmx(vsmx);