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:
@@ -429,7 +429,7 @@ public final class Main {
|
|||||||
|
|
||||||
byte[] vsmxData = rco.vsmxData();
|
byte[] vsmxData = rco.vsmxData();
|
||||||
if (vsmxData != null) {
|
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",
|
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);
|
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.setMinHeight(90);
|
||||||
stage.show();
|
stage.show();
|
||||||
|
|
||||||
scene.setOnKeyPressed(event -> {
|
scene.addEventFilter(javafx.scene.input.KeyEvent.KEY_PRESSED, event -> {
|
||||||
if (event.getCode() == KeyCode.F11) {
|
KeyCode code = event.getCode();
|
||||||
|
if (code == KeyCode.F11) {
|
||||||
stage.setFullScreen(!stage.isFullScreen());
|
stage.setFullScreen(!stage.isFullScreen());
|
||||||
|
event.consume();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
handleKey(event.getCode());
|
handleKey(code);
|
||||||
|
event.consume();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (isoPath != null) {
|
if (isoPath != null) {
|
||||||
@@ -179,7 +182,7 @@ public final class PlayerApp extends Application {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vsmx vsmx = new Vsmx(rco.vsmxData(), "menu");
|
Vsmx vsmx = new Vsmx(rco.vsmxData(), "main");
|
||||||
VsmxInterpreter interpreter = new VsmxInterpreter();
|
VsmxInterpreter interpreter = new VsmxInterpreter();
|
||||||
interpreter.setVsmx(vsmx);
|
interpreter.setVsmx(vsmx);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user