From 0e8d377adfe688e5b9a98f5564ae2e2b4f46692f Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 6 Aug 2019 08:28:41 -0400 Subject: [PATCH] keyremapping: fix race with sending messages and clearing chat input It is not necessary to clear the chat input when locking chat when a message would be sent. Currently this races with the key handlers where it can sometimes clear the chatbox input prior to enter being processed, resulting in dropped messages This was introduced in b5acb61771d31fa31266a545b485d72ee92a655c --- .../plugins/keyremapping/KeyRemappingListener.java | 10 ++++++++-- .../plugins/keyremapping/KeyRemappingPlugin.java | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingListener.java b/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingListener.java index 9ffbd27e77..fbdc08a7aa 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingListener.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingListener.java @@ -182,10 +182,16 @@ class KeyRemappingListener extends MouseAdapter implements KeyListener switch (e.getKeyCode()) { case KeyEvent.VK_ESCAPE: - // When existing typing mode, block the escape key + // When exiting typing mode, block the escape key // so that it doesn't trigger the in-game hotkeys e.consume(); - // FALLTHROUGH + plugin.setTyping(false); + clientThread.invoke(() -> + { + client.setVar(VarClientStr.CHATBOX_TYPED_TEXT, ""); + plugin.lockChat(); + }); + break; case KeyEvent.VK_ENTER: plugin.setTyping(false); clientThread.invoke(plugin::lockChat); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingPlugin.java index a292843ca1..b1edacd3da 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingPlugin.java @@ -88,6 +88,8 @@ public class KeyRemappingPlugin extends Plugin if (client.getGameState() == GameState.LOGGED_IN) { lockChat(); + // Clear any typed text + client.setVar(VarClientStr.CHATBOX_TYPED_TEXT, ""); } }); } @@ -178,8 +180,6 @@ public class KeyRemappingPlugin extends Plugin if (chatboxInput != null) { chatboxInput.setText(getPlayerNameWithIcon() + ": " + PRESS_ENTER_TO_CHAT); - // Typed text can be non-empty on plugin start, so clear it now - client.setVar(VarClientStr.CHATBOX_TYPED_TEXT, ""); } }