From a717d8027d92ddc5bda73542ac34c4ca9268940b Mon Sep 17 00:00:00 2001 From: Max Weber Date: Mon, 22 Oct 2018 21:33:23 -0600 Subject: [PATCH 1/4] ChatboxTextInput: Assume end cursor when changing value --- .../net/runelite/client/game/chatbox/ChatboxTextInput.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java index 83c3117406..6827b9bbdf 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java +++ b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java @@ -120,10 +120,7 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse public ChatboxTextInput value(String value) { this.value = new StringBuffer(value); - if (built) - { - clientThread.invoke(this::update); - } + cursorAt(this.value.length()); return this; } From ff5290b5d1effdda467431aa529b92fffdbcaefa Mon Sep 17 00:00:00 2001 From: Max Weber Date: Mon, 22 Oct 2018 21:35:55 -0600 Subject: [PATCH 2/4] ChatboxTextInput: Don't divide by zero when clicking on an empty string --- .../net/runelite/client/game/chatbox/ChatboxTextInput.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java index 6827b9bbdf..4a24d94a2f 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java +++ b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java @@ -318,6 +318,11 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse isInBounds = ev -> bounds.contains(ev.getPoint()); getCharOffset = ev -> { + if (fullWidth <= 0) + { + return 0; + } + int cx = ev.getX() - canvasX; int charIndex = (tsValue.length() * cx) / fullWidth; From e7d97ae38a77206282101d6febab9ea17a2a76a4 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Mon, 22 Oct 2018 21:38:22 -0600 Subject: [PATCH 3/4] ChatboxTextMenuInput: return this from build Otherwise you have to copy during the build chain to check if it is active --- .../net/runelite/client/game/chatbox/ChatboxTextMenuInput.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextMenuInput.java b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextMenuInput.java index 91d6b9eacd..00fa016cce 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextMenuInput.java +++ b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextMenuInput.java @@ -87,7 +87,7 @@ public class ChatboxTextMenuInput extends ChatboxInput implements KeyListener return this; } - public void build() + public ChatboxTextMenuInput build() { if (title == null) { @@ -100,6 +100,7 @@ public class ChatboxTextMenuInput extends ChatboxInput implements KeyListener } chatboxPanelManager.openInput(this); + return this; } @Override From 398bf3791355b5ac8aa0252337a5af7d63a0d830 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Tue, 23 Oct 2018 12:41:58 -0600 Subject: [PATCH 4/4] ChatboxTextInput: Fix blinking cursor --- .../net/runelite/client/game/chatbox/ChatboxTextInput.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java index 4a24d94a2f..c8b1a3e846 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java +++ b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxTextInput.java @@ -280,11 +280,13 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse else { cursor.setTextColor(0xFFFFFF); + long start = System.currentTimeMillis(); cursor.setOnTimerListener((JavaScriptCallback) ev -> { - boolean on = System.currentTimeMillis() % CURSOR_FLASH_RATE_MILLIS > (CURSOR_FLASH_RATE_MILLIS / 2); + boolean on = (System.currentTimeMillis() - start) % CURSOR_FLASH_RATE_MILLIS > (CURSOR_FLASH_RATE_MILLIS / 2); cursor.setOpacity(on ? 255 : 0); }); + cursor.setHasListener(true); } cursor.setFilled(true); cursor.setOriginalX(mtx - 1);