diff options
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/gui')
3 files changed, 14 insertions, 6 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/OneConfigGui.java b/src/main/java/cc/polyfrost/oneconfig/gui/OneConfigGui.java index 8becc0c..22b5455 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/OneConfigGui.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/OneConfigGui.java @@ -261,7 +261,7 @@ public class OneConfigGui extends UScreen { @Override public void onScreenClose() { currentPage.finishUpAndClose(); - //instanceToRestore = this; + instanceToRestore = this; INSTANCE = null; super.onScreenClose(); } diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java index 199e0f0..1ae585a 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java @@ -36,10 +36,12 @@ public class ConfigDropdown extends BasicOption { // TODO: chose where dividers if (size == 1) hovered = InputUtils.isAreaHovered(x + 224, y, 256, 32) && isEnabled(); else hovered = InputUtils.isAreaHovered(x + 352, y, 640, 32) && isEnabled(); - if (hovered && InputUtils.isClicked() || opened && InputUtils.isClicked() && + if (hovered && InputUtils.isClicked() || opened && InputUtils.isClicked(true) && (size == 1 && !InputUtils.isAreaHovered(x + 224, y + 40, 256, options.length * 32 + 4) || - size == 2 && !InputUtils.isAreaHovered(x + 352, y + 40, 640, options.length * 32 + 4))) + size == 2 && !InputUtils.isAreaHovered(x + 352, y + 40, 640, options.length * 32 + 4))) { opened = !opened; + InputUtils.blockClicks(opened); + } if (opened) return; backgroundColor = ColorUtils.smoothColor(backgroundColor, OneConfigConfig.GRAY_500, OneConfigConfig.GRAY_400, hovered, 100); @@ -97,12 +99,13 @@ public class ConfigDropdown extends BasicOption { // TODO: chose where dividers RenderManager.drawRoundedRect(vg, x + 228, optionY - 12, 248, 28, OneConfigConfig.BLUE_700, 8); color = OneConfigConfig.WHITE; } - if (optionHovered && InputUtils.isClicked()) { + if (optionHovered && InputUtils.isClicked(true)) { try { set(Arrays.asList(options).indexOf(option)); } catch (IllegalAccessException ignored) { } opened = false; + InputUtils.blockClicks(false); } RenderManager.drawString(vg, option, x + 240, optionY + 4, color, 14, Fonts.MEDIUM); @@ -135,12 +138,13 @@ public class ConfigDropdown extends BasicOption { // TODO: chose where dividers if (!options[options.length - 1].equals(option)) RenderManager.drawLine(vg, x + 360, optionY + 18, x + 984, optionY + 18, 1, new Color(204, 204, 204, 77).getRGB()); - if (optionHovered && InputUtils.isClicked()) { + if (optionHovered && InputUtils.isClicked(true)) { try { set(Arrays.asList(options).indexOf(option)); } catch (IllegalAccessException ignored) { } opened = false; + InputUtils.blockClicks(false); } optionY += 32; } diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java index 29d132a..c9f2691 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java @@ -18,6 +18,7 @@ public class ConfigSlider extends BasicOption { private boolean isFloat = true; private final int step; private boolean dragging = false; + private boolean mouseWasDown = false; public ConfigSlider(Field field, Object parent, String name, int size, float min, float max, int step) { super(field, parent, name, size); @@ -34,9 +35,12 @@ public class ConfigSlider extends BasicOption { boolean hovered = InputUtils.isAreaHovered(x + 352, y, 512, 32) && isEnabled(); inputField.disable(!isEnabled()); if (!isEnabled()) NanoVG.nvgGlobalAlpha(vg, 0.5f); - if (hovered && Mouse.isButtonDown(0)) dragging = true; + boolean isMouseDown = Mouse.isButtonDown(0); + if (hovered && isMouseDown && !mouseWasDown) dragging = true; + mouseWasDown = isMouseDown; if (dragging) { xCoordinate = (int) MathUtils.clamp(InputUtils.mouseX(), x + 352, x + 864); + if (step > 0) xCoordinate = getStepCoordinate(xCoordinate, x); value = MathUtils.map(xCoordinate, x + 352, x + 864, min, max); } else if (inputField.isToggled() || inputField.arrowsClicked()) { value = inputField.getCurrentValue(); |