Libgdx InputListener "exit()" is not being called with TextButton

android, input, java, libgdx, listener

Solution

After searching for a couple hours I finally found what was missing. `stage.act();` had to be called in the render method. This both gave functionality to the texture change when we hover over the button and also the enter/exit methods in the InputListener.

Problem

I want to use the exit() method in the InputListener to see wheter the cursor is inside the button or not. Here is the explanation in the libGDX docs. ``` public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) ``` Called any time the mouse cursor or a finger touch is moved out of an actor. But when I put my cursor on the button and then move it outside the button, the method is not called. I am testing it by a `System.out.println("exited");` and I get nothing in the console. EDIT: LibGDX Version: Latest Stable Nightlies InputListener implementation: ``` //This button class is a custom class to make button creation easier. This is the constructor. public Button(Vector2 position, String packLocation, String text, Stage stage, BitmapFont font, Color color) { //Removed buttonStyle creation etc. to shorten the code. button = new TextButton(text, buttonStyle); button.setPosition(position.x, position.y); stage.addActor(button); Gdx.input.setInputProcessor(stage); pressed = false; button.addListener(new ClickListener() { @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { pressed = true; return true; } @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { pressed = false; } @Override public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) { System.out.println("exited"); } }); } ``` EDIT: Hovering over the button also does not change the texture of the button as I set it to like so: `buttonStyle.over = skin.getDrawable("over");` But clicking does.

Original source