From f3a7c6b05df2a5fcde2617cbfcb8ef780989f5b5 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Sun, 27 Dec 2020 14:06:08 -0800 Subject: [PATCH] [scene2d.ui] ScrollPane, fixed scrolling via mouse wheel when there are scrollbars in only one direction. --- .../badlogic/gdx/scenes/scene2d/ui/ScrollPane.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gdx/src/com/badlogic/gdx/scenes/scene2d/ui/ScrollPane.java b/gdx/src/com/badlogic/gdx/scenes/scene2d/ui/ScrollPane.java index 969935d9282..fe044c5954c 100644 --- a/gdx/src/com/badlogic/gdx/scenes/scene2d/ui/ScrollPane.java +++ b/gdx/src/com/badlogic/gdx/scenes/scene2d/ui/ScrollPane.java @@ -105,7 +105,7 @@ public ScrollPane (@Null Actor widget, ScrollPaneStyle style) { addScrollListener(); } - protected void addCaptureListener() { + protected void addCaptureListener () { addCaptureListener(new InputListener() { private float handlePosition; @@ -182,7 +182,7 @@ public boolean mouseMoved (InputEvent event, float x, float y) { }); } - protected ActorGestureListener getFlickScrollListener() { + protected ActorGestureListener getFlickScrollListener () { return new ActorGestureListener() { public void pan (InputEvent event, float x, float y, float deltaX, float deltaY) { setScrollbarsVisible(true); @@ -216,11 +216,16 @@ public boolean handle (Event event) { }; } - protected void addScrollListener() { + protected void addScrollListener () { addListener(new InputListener() { public boolean scrolled (InputEvent event, float x, float y, float scrollAmountX, float scrollAmountY) { setScrollbarsVisible(true); if (scrollY || scrollX) { + if (scrollY) { + if (!scrollX && scrollAmountY == 0) scrollAmountY = scrollAmountX; + } else { + if (scrollX && scrollAmountX == 0) scrollAmountX = scrollAmountY; + } setScrollY(amountY + getMouseWheelY() * scrollAmountY); setScrollX(amountX + getMouseWheelX() * scrollAmountX); } else