From 7b5f2b45546a102c9e3898d8ef8ad54c7a6cb293 Mon Sep 17 00:00:00 2001 From: Michael Hillcox Date: Sun, 12 Jul 2026 15:53:38 +0100 Subject: [PATCH 1/3] feat: adjust the scrolling calls to support both the X+Y scrolling directions part of FTBTeam/FTB-Mods-Issues#2059 --- build.gradle | 2 +- .../config/ui/EditStringConfigOverlay.java | 6 +++--- .../ui/resource/ResourceSelectorScreen.java | 10 +++++----- .../dev/ftb/mods/ftblibrary/ui/BaseScreen.java | 10 +++++----- .../ftb/mods/ftblibrary/ui/DropDownMenu.java | 5 ----- .../dev/ftb/mods/ftblibrary/ui/IntTextBox.java | 6 +++--- .../java/dev/ftb/mods/ftblibrary/ui/Panel.java | 18 +++++++++--------- .../ftb/mods/ftblibrary/ui/ScreenWrapper.java | 6 ++++-- .../dev/ftb/mods/ftblibrary/ui/ScrollBar.java | 6 +++--- .../dev/ftb/mods/ftblibrary/ui/Widget.java | 10 +++++++++- 10 files changed, 42 insertions(+), 37 deletions(-) diff --git a/build.gradle b/build.gradle index 6bf78fec..6ccf2399 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id "architectury-plugin" version "3.4-SNAPSHOT" id "dev.architectury.loom" version "1.10-SNAPSHOT" apply false - id "me.modmuss50.mod-publish-plugin" version "2.0.0-beta.2" + id "me.modmuss50.mod-publish-plugin" version "2.1.0" } apply from: 'https://raw.githubusercontent.com/FTBTeam/mods-meta/main/gradle/changelog.gradle' diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java index e792cbf2..d0a83c91 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java @@ -165,12 +165,12 @@ public void onEnterPressed() { } @Override - public boolean mouseScrolled(double scroll) { - return config.scrollValue(currentValue, scroll > 0).map(v -> { + public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { + return config.scrollValue(currentValue, scrollVertical > 0).map(v -> { textBox.setText(config.getStringFromValue(v)); textBox.setSelectionPos(textBox.getCursorPos()); return true; - }).orElse(super.mouseScrolled(scroll)); + }).orElse(super.mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical)); } } } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java index 7ecfcc77..60d23615 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java @@ -1,7 +1,5 @@ package dev.ftb.mods.ftblibrary.config.ui.resource; -import com.google.common.base.Stopwatch; -import com.mojang.datafixers.util.Pair; import dev.ftb.mods.ftblibrary.FTBLibrary; import dev.ftb.mods.ftblibrary.config.ConfigCallback; import dev.ftb.mods.ftblibrary.config.ResourceConfigValue; @@ -21,6 +19,8 @@ import dev.ftb.mods.ftblibrary.ui.misc.SimpleToast; import dev.ftb.mods.ftblibrary.util.SearchTerms; import dev.ftb.mods.ftblibrary.util.TooltipList; +import com.google.common.base.Stopwatch; +import com.mojang.datafixers.util.Pair; import net.minecraft.ChatFormatting; import net.minecraft.Util; import net.minecraft.client.Minecraft; @@ -347,13 +347,13 @@ public CountTextBox() { } @Override - public boolean mouseScrolled(double scroll) { + public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { if (!isMouseOver) return false; if (isShiftKeyDown()) { - int adj = scroll > 0 ? getCount() : -getCount() / 2; + int adj = scrollVertical > 0 ? getCount() : -getCount() / 2; adjust(adj); } else { - adjust((int) Math.signum(scroll)); + adjust((int) Math.signum(scrollVertical)); } return true; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java index 4ac652f0..2b35375f 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java @@ -1,7 +1,5 @@ package dev.ftb.mods.ftblibrary.ui; -import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.platform.Window; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.ui.input.Key; import dev.ftb.mods.ftblibrary.ui.input.KeyModifiers; @@ -10,6 +8,8 @@ import dev.ftb.mods.ftblibrary.util.BooleanConsumer; import dev.ftb.mods.ftblibrary.util.TooltipList; import dev.ftb.mods.ftblibrary.util.client.ClientUtils; +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.Window; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.ChatScreen; @@ -468,11 +468,11 @@ public void mouseReleased(MouseButton button) { } @Override - public boolean mouseScrolled(double scroll) { - if (focusedWidget != null && focusedWidget.mouseScrolled(scroll)) { + public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { + if (focusedWidget != null && focusedWidget.mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical)) { return true; } - return modalPanels.isEmpty() ? super.mouseScrolled(scroll) : modalPanels.peekFirst().mouseScrolled(scroll); + return modalPanels.isEmpty() ? super.mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical) : modalPanels.peekFirst().mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical); } @Override diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/DropDownMenu.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/DropDownMenu.java index c0c3757c..eb3a3ae9 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/DropDownMenu.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/DropDownMenu.java @@ -31,11 +31,6 @@ public void onTextChanged() { this.scrollBar = new PanelScrollBar(this, ScrollBar.Plane.VERTICAL, mainPanel); } - @Override - public boolean scrollPanel(double scroll) { - return super.scrollPanel(scroll); - } - @Override public void addWidgets() { add(textBox); diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java index a744b46f..26db8ca2 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java @@ -43,9 +43,9 @@ public void setMinMax(int min, int max) { } @Override - public boolean mouseScrolled(double scroll) { + public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { if (allowInput()) { - setAmount(getIntValue() + (int) scroll); + setAmount(getIntValue() + (int) scrollVertical); return true; } return false; @@ -69,4 +69,4 @@ public void ensureValue() { setAmount(max); } } -} \ No newline at end of file +} diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java index 92a42da5..ed535080 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java @@ -331,19 +331,19 @@ public void mouseReleased(MouseButton button) { } @Override - public boolean mouseScrolled(double scroll) { + public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { setOffset(true); for (var i = widgets.size() - 1; i >= 0; i--) { var widget = widgets.get(i); - if (widget.isEnabled() && widget.mouseScrolled(scroll)) { + if (widget.isEnabled() && widget.mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical)) { setOffset(false); return true; } } - var scrollPanel = scrollPanel(scroll); + var scrollPanel = scrollPanel(scrollHorizontal, scrollVertical); setOffset(false); return scrollPanel; } @@ -365,16 +365,16 @@ public boolean mouseDragged(int button, double dragX, double dragY) { return false; } - public boolean scrollPanel(double scroll) { + public boolean scrollPanel(double scrollHorizontal, double scrollVertical) { if (attachedScrollbar != null || !isMouseOver()) { return false; } - if (isDefaultScrollVertical() != isShiftKeyDown()) { - return movePanelScroll(0, -getScrollStep() * scroll); - } else { - return movePanelScroll(-getScrollStep() * scroll, 0); - } + var isInverted = isDefaultScrollVertical() != isShiftKeyDown(); + return movePanelScroll( + isInverted ? scrollHorizontal : -getScrollStep() * scrollVertical, + isInverted ? -getScrollStep() * scrollVertical : scrollHorizontal + ); } public boolean movePanelScroll(double dx, double dy) { diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java index 4dae5bb3..62645566 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java @@ -1,10 +1,10 @@ package dev.ftb.mods.ftblibrary.ui; -import dev.architectury.platform.Platform; import dev.ftb.mods.ftblibrary.ui.input.Key; import dev.ftb.mods.ftblibrary.ui.input.KeyModifiers; import dev.ftb.mods.ftblibrary.ui.input.MouseButton; import dev.ftb.mods.ftblibrary.util.TooltipList; +import dev.architectury.platform.Platform; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.world.item.ItemStack; @@ -53,7 +53,9 @@ public boolean mouseReleased(double x, double y, int button) { @Override public boolean mouseScrolled(double x, double y, double dirX, double dirY) { - return wrappedGui.mouseScrolled(dirY) || super.mouseScrolled(x, y, dirX, dirY); + return wrappedGui.mouseScrolled(x, y, dirX, dirY) || + wrappedGui.mouseScrolled(dirY) || // TODO: Remove this when all guis are updated to the new mouseScrolled method + super.mouseScrolled(x, y, dirX, dirY); } @Override diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java index 0947c850..de1e2786 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java @@ -71,9 +71,9 @@ public boolean mousePressed(MouseButton button) { } @Override - public boolean mouseScrolled(double scroll) { - if (scroll != 0 && canMouseScrollPlane() && canMouseScroll()) { - setValue(getValue() - getScrollStep() * scroll); + public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { + if (scrollVertical != 0 && canMouseScrollPlane() && canMouseScroll()) { + setValue(getValue() - getScrollStep() * scrollVertical); return true; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java index a587aad0..9582b9c0 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java @@ -1,11 +1,11 @@ package dev.ftb.mods.ftblibrary.ui; -import com.mojang.blaze3d.platform.Window; import dev.ftb.mods.ftblibrary.ui.input.Key; import dev.ftb.mods.ftblibrary.ui.input.KeyModifiers; import dev.ftb.mods.ftblibrary.ui.input.MouseButton; import dev.ftb.mods.ftblibrary.util.TooltipList; import dev.ftb.mods.ftblibrary.util.client.PositionedIngredient; +import com.mojang.blaze3d.platform.Window; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; @@ -192,10 +192,18 @@ public boolean mouseDoubleClicked(MouseButton button) { public void mouseReleased(MouseButton button) { } + /** + * @deprecated use {@link #mouseScrolled(double, double, double, double)} instead + */ + @Deprecated public boolean mouseScrolled(double scroll) { return false; } + public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { + return false; + } + public boolean mouseDragged(int button, double dragX, double dragY) { return false; } From a540aed3e77e4978afb19764fb89b7342f9a263d Mon Sep 17 00:00:00 2001 From: Michael Hillcox Date: Mon, 13 Jul 2026 10:12:42 +0100 Subject: [PATCH 2/3] fix: issues with scrolling behaviour + logic --- .../config/ui/EditStringConfigOverlay.java | 6 ++-- .../ui/resource/ResourceSelectorScreen.java | 6 ++-- .../ftb/mods/ftblibrary/ui/BaseScreen.java | 6 ++-- .../ftb/mods/ftblibrary/ui/IntTextBox.java | 4 +-- .../dev/ftb/mods/ftblibrary/ui/Panel.java | 32 +++++++++++-------- .../dev/ftb/mods/ftblibrary/ui/ScrollBar.java | 8 +++-- .../dev/ftb/mods/ftblibrary/ui/Widget.java | 6 ++-- 7 files changed, 38 insertions(+), 30 deletions(-) diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java index d0a83c91..ef36113d 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java @@ -165,12 +165,12 @@ public void onEnterPressed() { } @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { - return config.scrollValue(currentValue, scrollVertical > 0).map(v -> { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + return config.scrollValue(currentValue, yDelta > 0).map(v -> { textBox.setText(config.getStringFromValue(v)); textBox.setSelectionPos(textBox.getCursorPos()); return true; - }).orElse(super.mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical)); + }).orElse(super.mouseScrolled(mouseX, mouseY, xDelta, yDelta)); } } } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java index 60d23615..fd7f9f20 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java @@ -347,13 +347,13 @@ public CountTextBox() { } @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { if (!isMouseOver) return false; if (isShiftKeyDown()) { - int adj = scrollVertical > 0 ? getCount() : -getCount() / 2; + int adj = yDelta > 0 ? getCount() : -getCount() / 2; adjust(adj); } else { - adjust((int) Math.signum(scrollVertical)); + adjust((int) Math.signum(yDelta)); } return true; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java index 2b35375f..e27303fd 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java @@ -468,11 +468,11 @@ public void mouseReleased(MouseButton button) { } @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { - if (focusedWidget != null && focusedWidget.mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical)) { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + if (focusedWidget != null && focusedWidget.mouseScrolled(mouseX, mouseY, xDelta, yDelta)) { return true; } - return modalPanels.isEmpty() ? super.mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical) : modalPanels.peekFirst().mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical); + return modalPanels.isEmpty() ? super.mouseScrolled(mouseX, mouseY, xDelta, yDelta) : modalPanels.peekFirst().mouseScrolled(mouseX, mouseY, xDelta, yDelta); } @Override diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java index 26db8ca2..4a3a1839 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java @@ -43,9 +43,9 @@ public void setMinMax(int min, int max) { } @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { if (allowInput()) { - setAmount(getIntValue() + (int) scrollVertical); + setAmount(getIntValue() + (int) yDelta); return true; } return false; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java index ed535080..a443fb99 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java @@ -331,19 +331,19 @@ public void mouseReleased(MouseButton button) { } @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { setOffset(true); for (var i = widgets.size() - 1; i >= 0; i--) { var widget = widgets.get(i); - if (widget.isEnabled() && widget.mouseScrolled(mouseX, mouseY, scrollHorizontal, scrollVertical)) { + if (widget.isEnabled() && widget.mouseScrolled(mouseX, mouseY, xDelta, yDelta)) { setOffset(false); return true; } } - var scrollPanel = scrollPanel(scrollHorizontal, scrollVertical); + var scrollPanel = scrollPanel(xDelta, yDelta); setOffset(false); return scrollPanel; } @@ -365,16 +365,26 @@ public boolean mouseDragged(int button, double dragX, double dragY) { return false; } - public boolean scrollPanel(double scrollHorizontal, double scrollVertical) { + public boolean scrollPanel(double xDelta, double yDelta) { if (attachedScrollbar != null || !isMouseOver()) { return false; } - var isInverted = isDefaultScrollVertical() != isShiftKeyDown(); - return movePanelScroll( - isInverted ? scrollHorizontal : -getScrollStep() * scrollVertical, - isInverted ? -getScrollStep() * scrollVertical : scrollHorizontal - ); + // No scroll direction was given? + var directionlessDelta = yDelta != 0 ? yDelta : xDelta; + if (directionlessDelta == 0) { + return false; + } + + // If the user is pressing shift, we'll always attempt to scroll horizontally, otherwise we'll just blindly apply both directions + if (isShiftKeyDown()) { + var scrollAmount = -getScrollStep() * directionlessDelta; + movePanelScroll(scrollAmount, 0); + } else { + movePanelScroll(-getScrollStep() * xDelta, -getScrollStep() * yDelta); + } + + return true; } public boolean movePanelScroll(double dx, double dy) { @@ -404,10 +414,6 @@ public boolean movePanelScroll(double dx, double dy) { return getScrollX() != sx || getScrollY() != sy; } - public boolean isDefaultScrollVertical() { - return true; - } - public double getScrollStep() { return scrollStep; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java index de1e2786..d71669f2 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java @@ -71,9 +71,11 @@ public boolean mousePressed(MouseButton button) { } @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { - if (scrollVertical != 0 && canMouseScrollPlane() && canMouseScroll()) { - setValue(getValue() - getScrollStep() * scrollVertical); + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + // We don't care which direction the user scrolled, just apply it. + var scrollDelta = yDelta == 0 ? xDelta : yDelta; + if (scrollDelta != 0 && canMouseScrollPlane() && canMouseScroll()) { + setValue(getValue() - getScrollStep() * scrollDelta); return true; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java index 9582b9c0..12853849 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java @@ -196,12 +196,12 @@ public void mouseReleased(MouseButton button) { * @deprecated use {@link #mouseScrolled(double, double, double, double)} instead */ @Deprecated - public boolean mouseScrolled(double scroll) { + public boolean mouseScrolled(double yDelta) { return false; } - public boolean mouseScrolled(double mouseX, double mouseY, double scrollHorizontal, double scrollVertical) { - return false; + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + return this.mouseScrolled(yDelta); } public boolean mouseDragged(int button, double dragX, double dragY) { From 237dae7477e2d95652f14d8fe514854f0a062779 Mon Sep 17 00:00:00 2001 From: Michael Hillcox Date: Mon, 13 Jul 2026 10:20:58 +0100 Subject: [PATCH 3/3] fix: copilot feedback --- .../mods/ftblibrary/config/ui/EditStringConfigOverlay.java | 3 ++- .../config/ui/resource/ResourceSelectorScreen.java | 6 ++++-- .../main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java | 4 +++- common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java | 6 ++---- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java index ef36113d..69bfeacb 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java @@ -166,7 +166,8 @@ public void onEnterPressed() { @Override public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { - return config.scrollValue(currentValue, yDelta > 0).map(v -> { + var directionlessDelta = xDelta != 0 ? xDelta : yDelta; + return config.scrollValue(currentValue, directionlessDelta > 0).map(v -> { textBox.setText(config.getStringFromValue(v)); textBox.setSelectionPos(textBox.getCursorPos()); return true; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java index fd7f9f20..a8566441 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java @@ -349,11 +349,13 @@ public CountTextBox() { @Override public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { if (!isMouseOver) return false; + + var directionlessDelta = xDelta != 0 ? xDelta : yDelta; if (isShiftKeyDown()) { - int adj = yDelta > 0 ? getCount() : -getCount() / 2; + int adj = directionlessDelta > 0 ? getCount() : -getCount() / 2; adjust(adj); } else { - adjust((int) Math.signum(yDelta)); + adjust((int) Math.signum(directionlessDelta)); } return true; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java index 4a3a1839..e40af13f 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java @@ -44,8 +44,10 @@ public void setMinMax(int min, int max) { @Override public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + var directionlessDelta = xDelta != 0 ? xDelta : yDelta; + if (allowInput()) { - setAmount(getIntValue() + (int) yDelta); + setAmount(getIntValue() + (int) directionlessDelta); return true; } return false; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java index a443fb99..ec941608 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java @@ -379,12 +379,10 @@ public boolean scrollPanel(double xDelta, double yDelta) { // If the user is pressing shift, we'll always attempt to scroll horizontally, otherwise we'll just blindly apply both directions if (isShiftKeyDown()) { var scrollAmount = -getScrollStep() * directionlessDelta; - movePanelScroll(scrollAmount, 0); + return movePanelScroll(scrollAmount, 0); } else { - movePanelScroll(-getScrollStep() * xDelta, -getScrollStep() * yDelta); + return movePanelScroll(-getScrollStep() * xDelta, -getScrollStep() * yDelta); } - - return true; } public boolean movePanelScroll(double dx, double dy) {