Describe the bug
When a VisWindow (or any Window in Scene2D) is set to setModal(true), it continues to intercept input events even if setVisible(false) is called. According to the Stage#touchDown and Stage#keyDown logic, if a modal actor exists in the stage, it often captures focus or blocks input from reaching actors behind it, regardless of its visibility status.
This creates a "ghost interception" where the UI is invisible, but the user is unable to interact with the game world or other UI elements because the hidden modal window is still consuming events.
Reproduction
Steps to reproduce the behavior:
Create a VisWindow and call setModal(true).
Add the window to a Stage.
Call window.setVisible(false).
Attempt to click on an actor behind the window or trigger a keyDown event.
Observe that the Stage methods (e.g., touchDown, keyDown) return true, indicating the event was handled/intercepted by the invisible window.
Expected behavior: An actor with setVisible(false) should be completely ignored by the input distribution logic, especially when acting as a modal barrier.
Expected behavior: An actor with setVisible(false) should be completely ignored by the input distribution logic, especially when acting as a modal barrier.
version
libGDX version: 1.14.0 VisUI version: master-SNAPSHOT
Stack trace
(No crash occurs, but debugging Stage#touchDown shows the event handled by the invisible modal Actor).
Affected platforms
Describe the bug
When a VisWindow (or any Window in Scene2D) is set to setModal(true), it continues to intercept input events even if setVisible(false) is called. According to the Stage#touchDown and Stage#keyDown logic, if a modal actor exists in the stage, it often captures focus or blocks input from reaching actors behind it, regardless of its visibility status.
This creates a "ghost interception" where the UI is invisible, but the user is unable to interact with the game world or other UI elements because the hidden modal window is still consuming events.
Reproduction
Steps to reproduce the behavior:
Create a VisWindow and call setModal(true).
Add the window to a Stage.
Call window.setVisible(false).
Attempt to click on an actor behind the window or trigger a keyDown event.
Observe that the Stage methods (e.g., touchDown, keyDown) return true, indicating the event was handled/intercepted by the invisible window.
Expected behavior: An actor with setVisible(false) should be completely ignored by the input distribution logic, especially when acting as a modal barrier.
Expected behavior: An actor with setVisible(false) should be completely ignored by the input distribution logic, especially when acting as a modal barrier.
version
libGDX version: 1.14.0 VisUI version: master-SNAPSHOT
Stack trace
Affected platforms