From 9f0b25acfcc27e758af4ec66a83acf0434e3e302 Mon Sep 17 00:00:00 2001 From: Mathieu Moran Date: Wed, 16 Sep 2026 09:04:02 -0400 Subject: [PATCH] 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. --- cli/src/main/java/dev/quoije/umd/cli/Main.java | 2 +- ui/src/main/java/dev/quoije/umd/ui/PlayerApp.java | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/cli/src/main/java/dev/quoije/umd/cli/Main.java b/cli/src/main/java/dev/quoije/umd/cli/Main.java index 868c6e8..315aa87 100644 --- a/cli/src/main/java/dev/quoije/umd/cli/Main.java +++ b/cli/src/main/java/dev/quoije/umd/cli/Main.java @@ -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); diff --git a/ui/src/main/java/dev/quoije/umd/ui/PlayerApp.java b/ui/src/main/java/dev/quoije/umd/ui/PlayerApp.java index a183e29..654e3b5 100644 --- a/ui/src/main/java/dev/quoije/umd/ui/PlayerApp.java +++ b/ui/src/main/java/dev/quoije/umd/ui/PlayerApp.java @@ -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);