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 057e7c20e4..d47b1ee89f 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 @@ -26,6 +26,7 @@ */ package net.runelite.client.plugins.bank; +import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.inject.Provides; import java.util.Arrays; @@ -36,12 +37,17 @@ import net.runelite.api.InventoryID; import net.runelite.api.Item; import net.runelite.api.ItemContainer; import net.runelite.api.MenuEntry; +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; @@ -96,6 +102,7 @@ public class BankPlugin extends Plugin private ContainerCalculation seedVaultCalculation; private boolean forceRightClickFlag; + private String searchString; @Provides BankConfig getConfig(ConfigManager configManager) @@ -108,6 +115,7 @@ public class BankPlugin extends Plugin { clientThread.invokeLater(() -> bankSearch.reset(false)); forceRightClickFlag = false; + searchString = ""; } @Subscribe @@ -176,6 +184,35 @@ public class BankPlugin extends Plugin updateSeedVaultTotal(); } + @Subscribe + 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); + } + } + + } + @Subscribe public void onItemContainerChanged(ItemContainerChanged event) { 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 73bfbc99a4..8d15c55a55 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 @@ -68,19 +68,6 @@ public class BankSearch { clientThread.invoke(() -> { - Widget bankContainer = client.getWidget(WidgetInfo.BANK_CONTAINER); - if (bankContainer == null || bankContainer.isHidden()) - { - return; - } - - Object[] widgetIds = bankContainer.getOnLoadListener(); - - // In case the widget ids array is incorrect, do not proceed - if (widgetIds == null || widgetIds.length < 21) - { - return; - } // This ensures that any chatbox input (e.g from search) will not remain visible when // selecting/changing tab if (closeInput) @@ -91,23 +78,42 @@ public class BankSearch client.setVar(VarClientInt.INPUT_TYPE, inputType.getType()); client.setVar(VarClientStr.INPUT_TEXT, search); - client.runScript(ScriptID.BANK_LAYOUT, - WidgetInfo.BANK_CONTAINER.getId(), - widgetIds[INNER_CONTAINER_IDX], - widgetIds[SETTINGS_IDX], - widgetIds[ITEM_CONTAINER_IDX], - widgetIds[SCROLLBAR_IDX], - widgetIds[BOTTOM_BAR_IDX], - widgetIds[TITLE_BAR_IDX], - widgetIds[ITEM_COUNT_IDX], - widgetIds[SEARCH_BUTTON_BACKGROUND_IDX], - widgetIds[TAB_BAR_IDX], - widgetIds[INCINERATOR_IDX], - widgetIds[INCINERATOR_CONFIRM_IDX], - widgetIds[HIDDEN_WIDGET_IDX]); + layoutBank(); }); } + public void layoutBank() + { + Widget bankContainer = client.getWidget(WidgetInfo.BANK_CONTAINER); + if (bankContainer == null || bankContainer.isHidden()) + { + return; + } + + Object[] widgetIds = bankContainer.getOnLoadListener(); + + // In case the widget ids array is incorrect, do not proceed + if (widgetIds == null || widgetIds.length < 21) + { + return; + } + + client.runScript(ScriptID.BANK_LAYOUT, + WidgetInfo.BANK_CONTAINER.getId(), + widgetIds[INNER_CONTAINER_IDX], + widgetIds[SETTINGS_IDX], + widgetIds[ITEM_CONTAINER_IDX], + widgetIds[SCROLLBAR_IDX], + widgetIds[BOTTOM_BAR_IDX], + widgetIds[TITLE_BAR_IDX], + widgetIds[ITEM_COUNT_IDX], + widgetIds[SEARCH_BUTTON_BACKGROUND_IDX], + widgetIds[TAB_BAR_IDX], + widgetIds[INCINERATOR_IDX], + widgetIds[INCINERATOR_CONFIRM_IDX], + widgetIds[HIDDEN_WIDGET_IDX]); + } + public void reset(Boolean closeChat) { search(InputType.NONE, "", closeChat);