aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java2
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java2
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/elements/BasicElement.java2
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java119
-rw-r--r--src/main/java/io/polyfrost/oneconfig/lwjgl/RenderManager.java3
5 files changed, 76 insertions, 52 deletions
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java b/src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java
index f078bc3..8a39c38 100644
--- a/src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java
+++ b/src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java
@@ -79,7 +79,7 @@ public class OneConfigGui extends GuiScreen {
RenderManager.drawString(vg, currentPage.getTitle(), x + 336, y + 36, OneConfigConfig.WHITE_90, 32f, Fonts.INTER_SEMIBOLD);
RenderManager.drawString(vg, s, x + 1170, y + 790, OneConfigConfig.GRAY_300, 10f, Fonts.INTER_MEDIUM);
});
- mouseDown = Mouse.isButtonDown(0) && prevPage == null;
+ mouseDown = Mouse.isButtonDown(0);
}
protected void keyTyped(char key, int keyCode) {
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java b/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java
index a87e412..1a1dcf7 100644
--- a/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java
+++ b/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java
@@ -74,7 +74,7 @@ public class BasicButton extends BasicElement {
this.y = y;
int textColor = -1;
RenderManager.drawRectangle(vg, x, y, this.width, this.height, this.currentColor);
- float contentWidth = RenderManager.getTextWidth(vg, text, fontSize);
+ float contentWidth = RenderManager.getTextWidth(vg, text, fontSize, Fonts.INTER_MEDIUM);
if (fileNameLeftIco != null) {
contentWidth += 28;
}
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicElement.java b/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicElement.java
index c4bab72..ef93a2a 100644
--- a/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicElement.java
+++ b/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicElement.java
@@ -41,7 +41,7 @@ public class BasicElement {
public void update(int x, int y) {
hovered = InputUtils.isAreaHovered(x - hitBoxX, y - hitBoxY, width + hitBoxX, height + hitBoxY);
- clicked = InputUtils.isClicked();
+ clicked = InputUtils.isClicked() && hovered;
if (hovered) {
if (clicked) {
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java b/src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java
index ef0b5a0..d5dcfdd 100644
--- a/src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java
+++ b/src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java
@@ -70,61 +70,58 @@ public class TextInputField extends BasicElement {
int color = toggled ? OneConfigConfig.WHITE : OneConfigConfig.WHITE_60;
float width;
StringBuilder s = new StringBuilder();
- int offset = 12;
if (!password) {
- width = RenderManager.getTextWidth(vg, input.substring(0, caretPos), 14f);
+ width = RenderManager.getTextWidth(vg, input.substring(0, caretPos), 14f, Fonts.INTER_REGULAR);
} else {
for (int i = 0; i < input.length(); i++) {
s.append("*");
}
- width = RenderManager.getTextWidth(vg, s.substring(0, caretPos), 14f);
+ width = RenderManager.getTextWidth(vg, s.substring(0, caretPos), 14f, Fonts.INTER_REGULAR);
}
nvgScissor(vg, x, y, this.width, height);
-
-
- while (Mouse.next()) {
- if (Mouse.getEventButtonState()) {
- if (Mouse.getEventButton() == 0) {
- prevCaret = calculatePos(Mouse.getEventX());
- if (System.currentTimeMillis() - clickTimeD1 < 300) {
- onDoubleClick();
- isDoubleClick = true;
- }
- clickTimeD1 = System.currentTimeMillis();
- }
- } else {
- if (Mouse.getEventButton() == 0) {
- long clickTimeU = System.currentTimeMillis();
- if (clickTimeU - clickTimeD1 < 200) {
- if (!isDoubleClick) {
- start = 0;
- end = 0;
+ if(hovered) {
+ while (Mouse.next()) {
+ if (Mouse.getEventButtonState()) {
+ if (Mouse.getEventButton() == 0) {
+ prevCaret = calculatePos(Mouse.getX());
+ if (System.currentTimeMillis() - clickTimeD1 < 300) {
+ onDoubleClick();
+ isDoubleClick = true;
}
- prevCaret = caretPos;
- isDoubleClick = false;
+ clickTimeD1 = System.currentTimeMillis();
}
+ } else {
+ if (Mouse.getEventButton() == 0) {
+ long clickTimeU = System.currentTimeMillis();
+ if (clickTimeU - clickTimeD1 < 200) {
+ if (!isDoubleClick) {
+ start = 0;
+ end = 0;
+ }
+ prevCaret = caretPos;
+ isDoubleClick = false;
+ }
+ }
}
}
}
if (start != 0f && end != 0f && toggled) {
- RenderManager.drawRect(vg, start, y + 10, end, 20, OneConfigConfig.GRAY_300);
+ RenderManager.drawRect(vg, start, y + height / 2f - 10, end, 20, OneConfigConfig.GRAY_300);
}
-
- if (Mouse.isButtonDown(0) && !isDoubleClick) {
- caretPos = calculatePos(Mouse.getX());
-
- if (caretPos > prevCaret) {
- start = x + offset + RenderManager.getTextWidth(vg, input.substring(0, prevCaret), 14f);
- end = RenderManager.getTextWidth(vg, input.substring(prevCaret, caretPos), 14f);
- selectedText = input.substring(prevCaret, caretPos);
- } else {
- start = x + offset + RenderManager.getTextWidth(vg, input.substring(0, prevCaret), 14f);
- end = -RenderManager.getTextWidth(vg, input.substring(caretPos, prevCaret), 14f);
- selectedText = input.substring(caretPos, prevCaret);
+ if(hovered) {
+ if (Mouse.isButtonDown(0) && !isDoubleClick) {
+ caretPos = calculatePos(Mouse.getX());
+ if (caretPos > prevCaret) {
+ start = x + 12 + this.getTextWidth(vg, input.substring(0, prevCaret));
+ end = this.getTextWidth(vg, input.substring(prevCaret, caretPos));
+ selectedText = input.substring(prevCaret, caretPos);
+ } else {
+ start = x + 12 + this.getTextWidth(vg, input.substring(0, prevCaret));
+ end = -this.getTextWidth(vg, input.substring(caretPos, prevCaret));
+ selectedText = input.substring(caretPos, prevCaret);
+ }
}
-
-
}
@@ -138,9 +135,9 @@ public class TextInputField extends BasicElement {
}
if (!password) {
- RenderManager.drawString(vg, input, x + offset, y + height / 2f + 1, color, 14f, Fonts.INTER_REGULAR);
+ RenderManager.drawString(vg, input, x + 12, y + height / 2f + 1, color, 14f, Fonts.INTER_REGULAR);
} else {
- RenderManager.drawString(vg, s.toString(), x + offset, y + height / 2f + 1, color, 14f, Fonts.INTER_REGULAR);
+ RenderManager.drawString(vg, s.toString(), x + 12, y + height / 2f + 1, color, 14f, Fonts.INTER_REGULAR);
}
nvgResetScissor(vg);
} catch (Exception e) {
@@ -187,7 +184,8 @@ public class TextInputField extends BasicElement {
prevCaret = 0;
caretPos = input.length();
start = x + 12;
- end = RenderManager.getTextWidth(vg, input, 14f);
+ selectedText = input;
+ end = this.getTextWidth(vg, input);
return;
}
if (GuiScreen.isKeyComboCtrlX(key)) {
@@ -293,6 +291,21 @@ public class TextInputField extends BasicElement {
if (!Character.isDefined(c)) return;
if(GuiScreen.isCtrlKeyDown()) return;
if(ChatAllowedCharacters.isAllowedCharacter(c)) {
+ if(getTextWidth(vg, input) + 22 > width) { // over typing is banned
+ return;
+ }
+ if(selectedText != null) {
+ if(caretPos > prevCaret) {
+ input = input.substring(0, prevCaret) + input.substring(prevCaret, caretPos);
+ caretPos = prevCaret;
+ } else {
+ input = input.substring(0, caretPos) + input.substring(caretPos, prevCaret);
+ }
+ if(selectedText.equals(input)) {
+ input = "";
+ }
+ selectedText = null;
+ }
input = addCharAtPoint(caretPos, c);
caretPos++;
}
@@ -313,9 +326,7 @@ public class TextInputField extends BasicElement {
@Override
public void onClick() {
- caretPos = calculatePos(Mouse.getX());
toggled = true;
-
}
private void onDoubleClick() {
@@ -323,8 +334,8 @@ public class TextInputField extends BasicElement {
caretPos = input.indexOf(' ', caretPos);
if(caretPos == -1) caretPos = input.length();
selectedText = input.substring(prevCaret, caretPos);
- start = x + 12 + RenderManager.getTextWidth(vg, input.substring(0, prevCaret), 14f);
- end = RenderManager.getTextWidth(vg, input.substring(prevCaret, caretPos), 14f);
+ start = x + 12 + this.getTextWidth(vg, input.substring(0, prevCaret));
+ end = this.getTextWidth(vg, input.substring(prevCaret, caretPos));
}
private int calculatePos(int pos) {
@@ -334,15 +345,27 @@ public class TextInputField extends BasicElement {
if (pos - x - 12 < 0) {
return 0;
}
- if (pos - x - 12 > RenderManager.getTextWidth(vg, input, 14f)) {
+ if (pos - x - 12 > this.getTextWidth(vg, input)) {
return input.length();
}
s1 += c;
- i = (int) RenderManager.getTextWidth(vg, s1, 14f);
+ i = (int) this.getTextWidth(vg, s1);
if (i >= pos - x - 16) {
return s1.length();
}
}
return 0;
}
+
+ private float getTextWidth(long vg, String s) {
+ if(password) {
+ StringBuilder s1 = new StringBuilder();
+ while(s1.length() < s.length()) {
+ s1.append('*');
+ }
+ return RenderManager.getTextWidth(vg, s1.toString(), 14.0f, Fonts.INTER_REGULAR);
+ } else {
+ return RenderManager.getTextWidth(vg, s, 14.0f, Fonts.INTER_REGULAR);
+ }
+ }
}
diff --git a/src/main/java/io/polyfrost/oneconfig/lwjgl/RenderManager.java b/src/main/java/io/polyfrost/oneconfig/lwjgl/RenderManager.java
index e9bbf47..223dc17 100644
--- a/src/main/java/io/polyfrost/oneconfig/lwjgl/RenderManager.java
+++ b/src/main/java/io/polyfrost/oneconfig/lwjgl/RenderManager.java
@@ -243,9 +243,10 @@ public final class RenderManager {
}
}
- public static float getTextWidth(long vg, String text, float fontSize) {
+ public static float getTextWidth(long vg, String text, float fontSize, Fonts font) {
float[] bounds = new float[4];
nvgFontSize(vg, fontSize);
+ nvgFontFace(vg, font.font.getName());
return nvgTextBounds(vg, 0, 0, text, bounds);
}