Skip to content

Modal VisWindow intercepts input even when setVisible(false) #7755

Description

@zqll4

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

  • Android
  • iOS
  • HTML/GWT
  • Windows
  • Linux
  • macOS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions