From 89caba889efe4548a18c95d67b56bbe1b5f7e399 Mon Sep 17 00:00:00 2001 From: adrian-andrzjewski Date: Sat, 14 Nov 2026 13:02:41 +0100 Subject: [PATCH] Fix FlyByCamera cursor visibility on registration (#1219) --- .../main/java/com/jme3/input/FlyByCamera.java | 3 +-- .../test/PreventCoreIssueRegressions.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/jme3-core/src/main/java/com/jme3/input/FlyByCamera.java b/jme3-core/src/main/java/com/jme3/input/FlyByCamera.java index 8e176b85e9..a783bb63bd 100644 --- a/jme3-core/src/main/java/com/jme3/input/FlyByCamera.java +++ b/jme3-core/src/main/java/com/jme3/input/FlyByCamera.java @@ -277,10 +277,9 @@ public void setDragToRotate(boolean dragToRotate) { */ public void registerWithInput(InputManager inputManager) { this.inputManager = inputManager; + // Keep cursor visibility under application control when the camera is disabled. if (enabled) { registerInputMappings(); - } else { - inputManager.setCursorVisible(true); } inputManager.addJoystickConnectionListener(this); } diff --git a/jme3-core/src/test/java/com/jme3/test/PreventCoreIssueRegressions.java b/jme3-core/src/test/java/com/jme3/test/PreventCoreIssueRegressions.java index eb9e6dc3e1..d36ffc5c9a 100644 --- a/jme3-core/src/test/java/com/jme3/test/PreventCoreIssueRegressions.java +++ b/jme3-core/src/test/java/com/jme3/test/PreventCoreIssueRegressions.java @@ -40,6 +40,7 @@ import com.jme3.app.state.ScreenshotAppState; import com.jme3.asset.AssetManager; import com.jme3.asset.DesktopAssetManager; +import com.jme3.input.FlyByCamera; import com.jme3.input.InputManager; import com.jme3.input.KeyInput; import com.jme3.input.RawInputListener; @@ -142,6 +143,29 @@ public void testIssue1138() { } } + /** + * Test case for JME issue #1219: Registering a disabled FlyByCamera preserves cursor visibility. + */ + @Test + public void testIssue1219() { + DummyMouseInput mouse = new DummyMouseInput(); + mouse.initialize(); + DummyKeyInput keys = new DummyKeyInput(); + keys.initialize(); + InputManager inputManager = new InputManager(mouse, keys, null, null); + FlyByCamera flyCam = new FlyByCamera(new Camera(1, 1)); + + flyCam.setEnabled(false); + inputManager.setCursorVisible(false); + flyCam.registerWithInput(inputManager); + + assertFalse(inputManager.isCursorVisible()); + + flyCam.setEnabled(true); + flyCam.setEnabled(false); + assertTrue(inputManager.isCursorVisible()); + } + @Test public void testDeletedMappingClearsPressedKeyState() { TestKeyInput keys = new TestKeyInput();