aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/gui/controllers/slider
diff options
context:
space:
mode:
authorxander <xander@isxander.dev>2022-09-02 22:04:35 +0100
committerxander <xander@isxander.dev>2022-09-02 22:04:35 +0100
commit7f88ddf36ba7804211e8aae6b3723bd8f37c82c5 (patch)
tree791e5cb050aa1ea17bd86d0bdd64fa441b2ab123 /src/main/java/dev/isxander/yacl/gui/controllers/slider
parentdd24e4f8e84ed02913196c8ad6093275acc92219 (diff)
downloadYetAnotherConfigLib-7f88ddf36ba7804211e8aae6b3723bd8f37c82c5.tar.gz
YetAnotherConfigLib-7f88ddf36ba7804211e8aae6b3723bd8f37c82c5.tar.bz2
YetAnotherConfigLib-7f88ddf36ba7804211e8aae6b3723bd8f37c82c5.zip
implement keyboard-operation for all controllers
fix crash when focusing on option list with tab add tooltip to groups check that pending values actually applied on save, if not, error in log and the save button displays an error when trying to escape with unsaved changes, save button text goes green and bold YACLConstants file to change certain behaviours, could evolve into its own settings! update icon
Diffstat (limited to 'src/main/java/dev/isxander/yacl/gui/controllers/slider')
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java b/src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java
index 8af2433..a6f046a 100644
--- a/src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java
+++ b/src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java
@@ -8,6 +8,7 @@ import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.MathHelper;
import org.jetbrains.annotations.ApiStatus;
+import org.lwjgl.glfw.GLFW;
@ApiStatus.Internal
public class SliderControllerElement extends ControllerWidget<ISliderController<?>> {
@@ -49,7 +50,7 @@ public class SliderControllerElement extends ControllerWidget<ISliderController<
@Override
protected void drawValueText(MatrixStack matrices, int mouseX, int mouseY, float delta) {
matrices.push();
- if (hovered)
+ if (hovered || focused)
matrices.translate(-(sliderBounds.width() + 6 + getThumbWidth() / 2f), 0, 0);
super.drawValueText(matrices, mouseX, mouseY, delta);
matrices.pop();
@@ -75,13 +76,17 @@ public class SliderControllerElement extends ControllerWidget<ISliderController<
return true;
}
+ public void incrementValue(double amount) {
+ control.setPendingValue(MathHelper.clamp(control.pendingValue() + interval * amount, min, max));
+ calculateInterpolation();
+ }
+
@Override
public boolean mouseScrolled(double mouseX, double mouseY, double amount) {
- if (!isMouseOver(mouseX, mouseY) || !Screen.hasShiftDown())
+ if ((!isMouseOver(mouseX, mouseY)) || (!Screen.hasShiftDown() && !Screen.hasControlDown()))
return false;
- control.setPendingValue(MathHelper.clamp(control.pendingValue() + interval * amount, min, max));
- calculateInterpolation();
+ incrementValue(amount);
return true;
}
@@ -95,6 +100,19 @@ public class SliderControllerElement extends ControllerWidget<ISliderController<
}
@Override
+ public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
+ switch (keyCode) {
+ case GLFW.GLFW_KEY_LEFT, GLFW.GLFW_KEY_DOWN -> incrementValue(-1);
+ case GLFW.GLFW_KEY_RIGHT, GLFW.GLFW_KEY_UP -> incrementValue(1);
+ default -> {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ @Override
public boolean isMouseOver(double mouseX, double mouseY) {
return super.isMouseOver(mouseX, mouseY) || mouseDown;
}