diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java index 9dcb1e8c3d..4cb7403bb3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java @@ -28,6 +28,7 @@ package net.runelite.client.plugins.bank; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.HashMultiset; +import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.Multiset; import com.google.inject.Provides; @@ -50,12 +51,17 @@ import net.runelite.api.ItemDefinition; import net.runelite.api.ItemID; import net.runelite.api.MenuEntry; import net.runelite.api.events.ConfigChanged; +import net.runelite.api.SpriteID; +import net.runelite.api.VarClientInt; +import net.runelite.api.VarClientStr; import net.runelite.api.Varbits; import net.runelite.api.events.ItemContainerChanged; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuShouldLeftClick; import net.runelite.api.events.ScriptCallbackEvent; +import net.runelite.api.events.VarClientStrChanged; import net.runelite.api.events.WidgetLoaded; +import net.runelite.api.vars.InputType; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetInfo; @@ -139,6 +145,7 @@ public class BankPlugin extends Plugin private boolean forceRightClickFlag; private boolean largePinNumbers; private Multiset itemQuantities; // bank item quantities for bank value search + private String searchString; @Provides BankConfig getConfig(ConfigManager configManager) @@ -179,6 +186,8 @@ public class BankPlugin extends Plugin eventBus.subscribe(ScriptCallbackEvent.class, this, this::onScriptCallbackEvent); eventBus.subscribe(WidgetLoaded.class, this, this::onWidgetLoaded); eventBus.subscribe(ItemContainerChanged.class, this, this::onItemContainerChanged); + eventBus.subscribe(VarClientStrChanged.class, this, this::onVarClientStrChanged); + searchString = ""; } private void onMenuShouldLeftClick(MenuShouldLeftClick event) @@ -266,7 +275,34 @@ public class BankPlugin extends Plugin updateSeedVaultTotal(); } - private void onItemContainerChanged(ItemContainerChanged event) + public void onVarClientStrChanged(VarClientStrChanged event) + { + String searchVar = client.getVar(VarClientStr.INPUT_TEXT); + + if (!searchVar.equals(searchString)) + { + Widget searchButtonBackground = client.getWidget(WidgetInfo.BANK_SEARCH_BUTTON_BACKGROUND); + if (searchButtonBackground != null && searchButtonBackground.hasListener()) + { + searchButtonBackground.setOnTimerListener((Object[]) null); + searchButtonBackground.setHasListener(false); + } + + clientThread.invokeLater(() -> bankSearch.layoutBank()); + searchString = searchVar; + } + + if (client.getVar(VarClientInt.INPUT_TYPE) != InputType.SEARCH.getType() && Strings.isNullOrEmpty(client.getVar(VarClientStr.INPUT_TEXT))) + { + Widget searchBackground = client.getWidget(WidgetInfo.BANK_SEARCH_BUTTON_BACKGROUND); + if (searchBackground != null) + { + searchBackground.setSpriteId(SpriteID.EQUIPMENT_SLOT_TILE); + } + } + } + + public void onItemContainerChanged(ItemContainerChanged event) { int containerId = event.getContainerId(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/BankSearch.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/BankSearch.java index ccb066c9a3..589f7052e5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/BankSearch.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/BankSearch.java @@ -54,18 +54,6 @@ public class BankSearch { clientThread.invoke(() -> { - Widget bankContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER); - if (bankContainer == null || bankContainer.isHidden()) - { - return; - } - - Object[] scriptArgs = bankContainer.getOnInvTransmit(); - - if (scriptArgs == null) - { - return; - } // This ensures that any chatbox input (e.g from search) will not remain visible when // selecting/changing tab @@ -77,10 +65,28 @@ public class BankSearch client.setVar(VarClientInt.INPUT_TYPE, inputType.getType()); client.setVar(VarClientStr.INPUT_TEXT, search); - client.runScript(scriptArgs); + layoutBank(); }); } + public void layoutBank() + { + Widget bankContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER); + if (bankContainer == null || bankContainer.isHidden()) + { + return; + } + + Object[] scriptArgs = bankContainer.getOnInvTransmit(); + + if (scriptArgs == null) + { + return; + } + + client.runScript(scriptArgs); + } + public void reset(boolean closeChat) { search(InputType.NONE, "", closeChat);