tagtabs: split tag search from bank search
This fixes a lot of edge cases which required us to re-search for things after input was re-used when a tag tab was open, and removes the requirement of having the bank search text be in sync with the currently selected tab. This also no longer parses the tag tab out of the title during times when the input is being re-used (like Withdraw-x) which was broken earlier from the bank plugin changing the title to include the value of searches. A new tag tab title is being set now on all tag tab views so the old tag tab tab title event can be removed.
This commit is contained in:
@@ -293,4 +293,7 @@ public final class ScriptID
|
|||||||
*/
|
*/
|
||||||
@ScriptArguments(integer = 17)
|
@ScriptArguments(integer = 17)
|
||||||
public static final int BANKMAIN_BUILD = 277;
|
public static final int BANKMAIN_BUILD = 277;
|
||||||
|
|
||||||
|
@ScriptArguments(integer = 19)
|
||||||
|
public static final int BANKMAIN_FINISHBUILDING = 505;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ import net.runelite.api.events.MenuEntryAdded;
|
|||||||
import net.runelite.api.events.MenuOptionClicked;
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
import net.runelite.api.events.ScriptCallbackEvent;
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
import net.runelite.api.events.ScriptPostFired;
|
import net.runelite.api.events.ScriptPostFired;
|
||||||
|
import net.runelite.api.events.ScriptPreFired;
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
import net.runelite.api.vars.InputType;
|
import net.runelite.api.vars.InputType;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
@@ -84,6 +85,7 @@ import net.runelite.client.plugins.banktags.tabs.BankSearch;
|
|||||||
import net.runelite.client.plugins.banktags.tabs.TabInterface;
|
import net.runelite.client.plugins.banktags.tabs.TabInterface;
|
||||||
import static net.runelite.client.plugins.banktags.tabs.TabInterface.FILTERED_CHARS;
|
import static net.runelite.client.plugins.banktags.tabs.TabInterface.FILTERED_CHARS;
|
||||||
import net.runelite.client.plugins.banktags.tabs.TabSprites;
|
import net.runelite.client.plugins.banktags.tabs.TabSprites;
|
||||||
|
import net.runelite.client.plugins.banktags.tabs.TagTab;
|
||||||
import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin;
|
import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin;
|
||||||
import net.runelite.client.util.Text;
|
import net.runelite.client.util.Text;
|
||||||
|
|
||||||
@@ -308,8 +310,19 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "bankSearchFilter":
|
case "bankSearchFilter":
|
||||||
int itemId = intStack[intStackSize - 1];
|
final int itemId = intStack[intStackSize - 1];
|
||||||
String search = stringStack[stringStackSize - 1];
|
final String searchfilter = stringStack[stringStackSize - 1];
|
||||||
|
|
||||||
|
// This event fires regardless of the bank being in search mode. If we have a current
|
||||||
|
// tab set then the bank should be not in search mode (and the filter empty). Otherwise
|
||||||
|
// the filter is either empty for no search or contains the search filter.
|
||||||
|
TagTab activeTab = tabInterface.getActiveTab();
|
||||||
|
String search = activeTab != null ? TAG_SEARCH + activeTab.getTag() : searchfilter;
|
||||||
|
|
||||||
|
if (search.isEmpty())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
boolean tagSearch = search.startsWith(TAG_SEARCH);
|
boolean tagSearch = search.startsWith(TAG_SEARCH);
|
||||||
if (tagSearch)
|
if (tagSearch)
|
||||||
@@ -324,6 +337,8 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener
|
|||||||
}
|
}
|
||||||
else if (tagSearch)
|
else if (tagSearch)
|
||||||
{
|
{
|
||||||
|
// if the item isn't tagged we return false to prevent the item matching if the item name happens
|
||||||
|
// to contain the tag name.
|
||||||
intStack[intStackSize - 2] = 0;
|
intStack[intStackSize - 2] = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -402,8 +417,6 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener
|
|||||||
.map(i -> i + "*")
|
.map(i -> i + "*")
|
||||||
.forEach(tags::add);
|
.forEach(tags::add);
|
||||||
|
|
||||||
boolean isSearchOpen = client.getVar(VarClientInt.INPUT_TYPE) == InputType.SEARCH.getType();
|
|
||||||
String searchText = client.getVar(VarClientStr.INPUT_TEXT);
|
|
||||||
String initialValue = Text.toCSV(tags);
|
String initialValue = Text.toCSV(tags);
|
||||||
|
|
||||||
chatboxPanelManager.openTextInput(name + " tags:<br>(append " + VAR_TAG_SUFFIX + " for variation tag)")
|
chatboxPanelManager.openTextInput(name + " tags:<br>(append " + VAR_TAG_SUFFIX + " for variation tag)")
|
||||||
@@ -430,12 +443,6 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener
|
|||||||
tabInterface.updateTabIfActive(Text.fromCSV(newValue.toLowerCase().replaceAll(Pattern.quote(VAR_TAG_SUFFIX), "")));
|
tabInterface.updateTabIfActive(Text.fromCSV(newValue.toLowerCase().replaceAll(Pattern.quote(VAR_TAG_SUFFIX), "")));
|
||||||
}))
|
}))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
if (isSearchOpen)
|
|
||||||
{
|
|
||||||
bankSearch.reset(false);
|
|
||||||
bankSearch.search(InputType.SEARCH, searchText, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -466,6 +473,29 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener
|
|||||||
&& !Strings.isNullOrEmpty(client.getVar(VarClientStr.INPUT_TEXT)));
|
&& !Strings.isNullOrEmpty(client.getVar(VarClientStr.INPUT_TEXT)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onScriptPreFired(ScriptPreFired event)
|
||||||
|
{
|
||||||
|
if (event.getScriptId() == ScriptID.BANKMAIN_FINISHBUILDING)
|
||||||
|
{
|
||||||
|
// Since we apply tag tab search filters even when the bank is not in search mode,
|
||||||
|
// bankkmain_build will reset the bank title to "The Bank of Gielinor". So apply our
|
||||||
|
// own title.
|
||||||
|
TagTab activeTab = tabInterface.getActiveTab();
|
||||||
|
if (tabInterface.isTagTabActive())
|
||||||
|
{
|
||||||
|
// Tag tab tab has its own title since it isn't a real tag
|
||||||
|
Widget bankTitle = client.getWidget(WidgetInfo.BANK_TITLE_BAR);
|
||||||
|
bankTitle.setText("Tag tab tab");
|
||||||
|
}
|
||||||
|
else if (activeTab != null)
|
||||||
|
{
|
||||||
|
Widget bankTitle = client.getWidget(WidgetInfo.BANK_TITLE_BAR);
|
||||||
|
bankTitle.setText("Tag tab <col=ff0000>" + activeTab.getTag() + "</col>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onScriptPostFired(ScriptPostFired event)
|
public void onScriptPostFired(ScriptPostFired event)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,7 +25,8 @@
|
|||||||
|
|
||||||
package net.runelite.client.plugins.banktags.tabs;
|
package net.runelite.client.plugins.banktags.tabs;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.ScriptID;
|
import net.runelite.api.ScriptID;
|
||||||
import net.runelite.api.VarClientInt;
|
import net.runelite.api.VarClientInt;
|
||||||
@@ -35,6 +36,7 @@ import net.runelite.api.widgets.Widget;
|
|||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
import net.runelite.client.callback.ClientThread;
|
import net.runelite.client.callback.ClientThread;
|
||||||
|
|
||||||
|
@Singleton
|
||||||
public class BankSearch
|
public class BankSearch
|
||||||
{
|
{
|
||||||
private final Client client;
|
private final Client client;
|
||||||
@@ -50,24 +52,6 @@ public class BankSearch
|
|||||||
this.clientThread = clientThread;
|
this.clientThread = clientThread;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void search(InputType inputType, String search, boolean closeInput)
|
|
||||||
{
|
|
||||||
clientThread.invoke(() ->
|
|
||||||
{
|
|
||||||
// This ensures that any chatbox input (e.g from search) will not remain visible when
|
|
||||||
// selecting/changing tab
|
|
||||||
if (closeInput)
|
|
||||||
{
|
|
||||||
client.runScript(ScriptID.MESSAGE_LAYER_CLOSE, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
client.setVar(VarClientInt.INPUT_TYPE, inputType.getType());
|
|
||||||
client.setVar(VarClientStr.INPUT_TEXT, search);
|
|
||||||
|
|
||||||
layoutBank();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void layoutBank()
|
public void layoutBank()
|
||||||
{
|
{
|
||||||
Widget bankContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER);
|
Widget bankContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER);
|
||||||
@@ -87,6 +71,19 @@ public class BankSearch
|
|||||||
|
|
||||||
public void reset(boolean closeChat)
|
public void reset(boolean closeChat)
|
||||||
{
|
{
|
||||||
search(InputType.NONE, "", closeChat);
|
clientThread.invoke(() ->
|
||||||
|
{
|
||||||
|
// This ensures that any chatbox input (e.g from search) will not remain visible when
|
||||||
|
// selecting/changing tab
|
||||||
|
if (closeChat)
|
||||||
|
{
|
||||||
|
client.runScript(ScriptID.MESSAGE_LAYER_CLOSE, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
client.setVar(VarClientInt.INPUT_TYPE, InputType.NONE.getType());
|
||||||
|
client.setVar(VarClientStr.INPUT_TEXT, "");
|
||||||
|
|
||||||
|
layoutBank();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ import net.runelite.api.Varbits;
|
|||||||
import net.runelite.api.events.MenuEntryAdded;
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
import net.runelite.api.events.MenuOptionClicked;
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
import net.runelite.api.events.ScriptCallbackEvent;
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
import net.runelite.api.vars.InputType;
|
|
||||||
import net.runelite.api.widgets.ItemQuantityMode;
|
import net.runelite.api.widgets.ItemQuantityMode;
|
||||||
import net.runelite.api.widgets.JavaScriptCallback;
|
import net.runelite.api.widgets.JavaScriptCallback;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
@@ -118,8 +117,6 @@ public class TabInterface
|
|||||||
private static final String OPEN_TAB_MENU = "View tag tabs";
|
private static final String OPEN_TAB_MENU = "View tag tabs";
|
||||||
private static final String SHOW_WORN = "Show worn items";
|
private static final String SHOW_WORN = "Show worn items";
|
||||||
private static final String SHOW_SETTINGS = "Show menu";
|
private static final String SHOW_SETTINGS = "Show menu";
|
||||||
private static final String HIDE_WORN = "Hide worn items";
|
|
||||||
private static final String HIDE_SETTINGS = "Hide menu";
|
|
||||||
private static final String SHOW_TUTORIAL = "Show tutorial";
|
private static final String SHOW_TUTORIAL = "Show tutorial";
|
||||||
private static final int TAB_HEIGHT = 40;
|
private static final int TAB_HEIGHT = 40;
|
||||||
private static final int TAB_WIDTH = 39;
|
private static final int TAB_WIDTH = 39;
|
||||||
@@ -149,12 +146,13 @@ public class TabInterface
|
|||||||
private final Rectangle canvasBounds = new Rectangle();
|
private final Rectangle canvasBounds = new Rectangle();
|
||||||
|
|
||||||
private ChatboxItemSearch searchProvider;
|
private ChatboxItemSearch searchProvider;
|
||||||
|
@Getter
|
||||||
private TagTab activeTab;
|
private TagTab activeTab;
|
||||||
|
@Getter
|
||||||
|
private boolean tagTabActive;
|
||||||
private int maxTabs;
|
private int maxTabs;
|
||||||
private int currentTabIndex;
|
private int currentTabIndex;
|
||||||
private Instant startScroll = Instant.now();
|
private Instant startScroll = Instant.now();
|
||||||
private String rememberedSearch;
|
|
||||||
private boolean waitSearchTick;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Widget upButton;
|
private Widget upButton;
|
||||||
@@ -410,16 +408,15 @@ public class TabInterface
|
|||||||
|
|
||||||
if (tab.equals(activeTab))
|
if (tab.equals(activeTab))
|
||||||
{
|
{
|
||||||
bankSearch.reset(true);
|
activateTab(null);
|
||||||
rememberedSearch = "";
|
|
||||||
|
|
||||||
clientThread.invokeLater(() -> client.runScript(ScriptID.MESSAGE_LAYER_CLOSE, 0, 0));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
openTag(Text.removeTags(clicked.getName()));
|
openTag(Text.removeTags(clicked.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bankSearch.reset(true);
|
||||||
|
|
||||||
client.playSoundEffect(SoundEffectID.UI_BOOP);
|
client.playSoundEffect(SoundEffectID.UI_BOOP);
|
||||||
break;
|
break;
|
||||||
case Tab.CHANGE_ICON:
|
case Tab.CHANGE_ICON:
|
||||||
@@ -481,8 +478,6 @@ public class TabInterface
|
|||||||
currentTabIndex = 0;
|
currentTabIndex = 0;
|
||||||
maxTabs = 0;
|
maxTabs = 0;
|
||||||
parent = null;
|
parent = null;
|
||||||
waitSearchTick = false;
|
|
||||||
rememberedSearch = "";
|
|
||||||
|
|
||||||
if (upButton != null)
|
if (upButton != null)
|
||||||
{
|
{
|
||||||
@@ -499,8 +494,6 @@ public class TabInterface
|
|||||||
if (isHidden())
|
if (isHidden())
|
||||||
{
|
{
|
||||||
parent = null;
|
parent = null;
|
||||||
waitSearchTick = false;
|
|
||||||
rememberedSearch = "";
|
|
||||||
|
|
||||||
saveTab();
|
saveTab();
|
||||||
return;
|
return;
|
||||||
@@ -512,57 +505,6 @@ public class TabInterface
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activeTab != null && client.getVar(VarClientInt.INPUT_TYPE) == InputType.RUNELITE_CHATBOX_PANEL.getType())
|
|
||||||
{
|
|
||||||
// don't reset active tab if we are editing tags
|
|
||||||
updateBounds();
|
|
||||||
scrollTab(0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String str = client.getVar(VarClientStr.INPUT_TEXT);
|
|
||||||
|
|
||||||
if (Strings.isNullOrEmpty(str))
|
|
||||||
{
|
|
||||||
str = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget bankTitle = client.getWidget(WidgetInfo.BANK_TITLE_BAR);
|
|
||||||
if (bankTitle != null && !bankTitle.isHidden() && !str.startsWith(TAG_SEARCH))
|
|
||||||
{
|
|
||||||
str = bankTitle.getText().replaceFirst("Showing items: ", "");
|
|
||||||
|
|
||||||
if (str.startsWith("Tab "))
|
|
||||||
{
|
|
||||||
str = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
str = Text.standardize(str);
|
|
||||||
|
|
||||||
if (str.startsWith(BankTagsPlugin.TAG_SEARCH))
|
|
||||||
{
|
|
||||||
activateTab(tabManager.find(str.substring(TAG_SEARCH.length())));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
activateTab(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!waitSearchTick
|
|
||||||
&& activeTab == null
|
|
||||||
&& !Strings.isNullOrEmpty(rememberedSearch)
|
|
||||||
&& client.getVar(VarClientInt.INPUT_TYPE) == InputType.NONE.getType())
|
|
||||||
{
|
|
||||||
bankSearch.reset(true);
|
|
||||||
bankSearch.search(InputType.NONE, rememberedSearch, true);
|
|
||||||
rememberedSearch = "";
|
|
||||||
}
|
|
||||||
else if (waitSearchTick)
|
|
||||||
{
|
|
||||||
waitSearchTick = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
updateBounds();
|
updateBounds();
|
||||||
scrollTab(0);
|
scrollTab(0);
|
||||||
}
|
}
|
||||||
@@ -603,7 +545,7 @@ public class TabInterface
|
|||||||
|
|
||||||
private boolean isTabMenuActive()
|
private boolean isTabMenuActive()
|
||||||
{
|
{
|
||||||
return TAB_MENU.equals(client.getVar(VarClientStr.INPUT_TEXT));
|
return tagTabActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleScriptEvent(final ScriptCallbackEvent event)
|
public void handleScriptEvent(final ScriptCallbackEvent event)
|
||||||
@@ -633,17 +575,6 @@ public class TabInterface
|
|||||||
case "beforeBankLayout":
|
case "beforeBankLayout":
|
||||||
setTabMenuVisible(false);
|
setTabMenuVisible(false);
|
||||||
break;
|
break;
|
||||||
case "isTabMenuActive":
|
|
||||||
if (!isTabMenuActive())
|
|
||||||
{
|
|
||||||
intStack[intStackSize - 1] = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Must set the bank title because we are skipping it in scripts
|
|
||||||
client.getWidget(WidgetInfo.BANK_TITLE_BAR).setText("Showing items: " + ColorUtil.wrapWithColorTag(TAB_MENU, Color.red));
|
|
||||||
intStack[intStackSize - 1] = 1;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -724,17 +655,6 @@ public class TabInterface
|
|||||||
chatboxPanelManager.close();
|
chatboxPanelManager.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((event.getWidgetId() == WidgetInfo.BANK_ITEM_CONTAINER.getId()
|
|
||||||
|| event.getWidgetId() == WidgetInfo.BANK_INVENTORY_ITEMS_CONTAINER.getId())
|
|
||||||
&& event.getMenuAction() == MenuAction.CC_OP_LOW_PRIORITY
|
|
||||||
&& (event.getMenuOption().equalsIgnoreCase("withdraw-x")
|
|
||||||
|| event.getMenuOption().equalsIgnoreCase("deposit-x")))
|
|
||||||
{
|
|
||||||
waitSearchTick = true;
|
|
||||||
rememberedSearch = client.getVar(VarClientStr.INPUT_TEXT);
|
|
||||||
bankSearch.search(InputType.NONE, rememberedSearch, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (activeTab != null
|
if (activeTab != null
|
||||||
&& event.getMenuOption().equals("Search")
|
&& event.getMenuOption().equals("Search")
|
||||||
&& client.getWidget(WidgetInfo.BANK_SEARCH_BUTTON_BACKGROUND).getSpriteId() != SpriteID.EQUIPMENT_SLOT_SELECTED)
|
&& client.getWidget(WidgetInfo.BANK_SEARCH_BUTTON_BACKGROUND).getSpriteId() != SpriteID.EQUIPMENT_SLOT_SELECTED)
|
||||||
@@ -760,7 +680,7 @@ public class TabInterface
|
|||||||
final ItemComposition item = getItem(event.getActionParam());
|
final ItemComposition item = getItem(event.getActionParam());
|
||||||
final int itemId = item.getId();
|
final int itemId = item.getId();
|
||||||
tagManager.removeTag(itemId, activeTab.getTag());
|
tagManager.removeTag(itemId, activeTab.getTag());
|
||||||
bankSearch.search(InputType.SEARCH, TAG_SEARCH + activeTab.getTag(), true);
|
bankSearch.layoutBank(); // re-layout to filter the removed item out
|
||||||
}
|
}
|
||||||
else if (event.getMenuAction() == MenuAction.RUNELITE
|
else if (event.getMenuAction() == MenuAction.RUNELITE
|
||||||
&& ((event.getWidgetId() == WidgetInfo.BANK_DEPOSIT_INVENTORY.getId() && event.getMenuOption().equals(TAG_INVENTORY))
|
&& ((event.getWidgetId() == WidgetInfo.BANK_DEPOSIT_INVENTORY.getId() && event.getMenuOption().equals(TAG_INVENTORY))
|
||||||
@@ -773,14 +693,6 @@ public class TabInterface
|
|||||||
|| (event.getWidgetId() == WidgetInfo.BANK_TUTORIAL_BUTTON.getId() && event.getMenuOption().equals(SHOW_TUTORIAL))))
|
|| (event.getWidgetId() == WidgetInfo.BANK_TUTORIAL_BUTTON.getId() && event.getMenuOption().equals(SHOW_TUTORIAL))))
|
||||||
{
|
{
|
||||||
saveTab();
|
saveTab();
|
||||||
rememberedSearch = TAG_SEARCH + activeTab.getTag();
|
|
||||||
}
|
|
||||||
else if (!Strings.isNullOrEmpty(rememberedSearch) && ((event.getWidgetId() == WidgetInfo.BANK_EQUIPMENT_BUTTON.getId() && event.getMenuOption().equals(HIDE_WORN))
|
|
||||||
|| (event.getWidgetId() == WidgetInfo.BANK_SETTINGS_BUTTON.getId() && event.getMenuOption().equals(HIDE_SETTINGS))))
|
|
||||||
{
|
|
||||||
bankSearch.reset(true);
|
|
||||||
bankSearch.search(InputType.NONE, rememberedSearch, true);
|
|
||||||
rememberedSearch = "";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -963,6 +875,7 @@ public class TabInterface
|
|||||||
{
|
{
|
||||||
if (activeTab != null && activeTab.getTag().equals(tag))
|
if (activeTab != null && activeTab.getTag().equals(tag))
|
||||||
{
|
{
|
||||||
|
activateTab(null);
|
||||||
bankSearch.reset(true);
|
bankSearch.reset(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1092,6 +1005,8 @@ public class TabInterface
|
|||||||
tab.revalidate();
|
tab.revalidate();
|
||||||
activeTab = tagTab;
|
activeTab = tagTab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tagTabActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateBounds()
|
private void updateBounds()
|
||||||
@@ -1253,8 +1168,9 @@ public class TabInterface
|
|||||||
|
|
||||||
private void openTag(final String tag)
|
private void openTag(final String tag)
|
||||||
{
|
{
|
||||||
bankSearch.search(InputType.SEARCH, TAG_SEARCH + tag, true);
|
|
||||||
activateTab(tabManager.find(tag));
|
activateTab(tabManager.find(tag));
|
||||||
|
tagTabActive = BankTagsPlugin.TAG_TABS_CONFIG.equals(tag);
|
||||||
|
bankSearch.layoutBank();
|
||||||
|
|
||||||
// When tab is selected with search window open, the search window closes but the search button
|
// When tab is selected with search window open, the search window closes but the search button
|
||||||
// stays highlighted, this solves that issue
|
// stays highlighted, this solves that issue
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import net.runelite.api.widgets.Widget;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(of = "tag")
|
@EqualsAndHashCode(of = "tag")
|
||||||
class TagTab
|
public class TagTab
|
||||||
{
|
{
|
||||||
private String tag;
|
private String tag;
|
||||||
private int iconItemId;
|
private int iconItemId;
|
||||||
|
|||||||
@@ -10,6 +10,16 @@
|
|||||||
invoke 514
|
invoke 514
|
||||||
iconst 1
|
iconst 1
|
||||||
if_icmpeq LABEL8
|
if_icmpeq LABEL8
|
||||||
|
|
||||||
|
iconst 1 ; return value - default to true to match anything
|
||||||
|
iload 0 ; load item id
|
||||||
|
sconst "" ; we are not searching, so there is no search string
|
||||||
|
sconst "bankSearchFilter" ; push event name
|
||||||
|
runelite_callback ; invoke callback
|
||||||
|
pop_int ; pop item id
|
||||||
|
pop_string ; pop search string
|
||||||
|
return ; return rv
|
||||||
|
|
||||||
jump LABEL34
|
jump LABEL34
|
||||||
LABEL8:
|
LABEL8:
|
||||||
get_varc_string 359 ; Skip truncating of varcstr 22 by not calling 280
|
get_varc_string 359 ; Skip truncating of varcstr 22 by not calling 280
|
||||||
@@ -32,13 +42,11 @@ LABEL19:
|
|||||||
sstore 0
|
sstore 0
|
||||||
iconst -1 ; load return value
|
iconst -1 ; load return value
|
||||||
iload 0 ; load item id
|
iload 0 ; load item id
|
||||||
sload 0 ; load item name
|
|
||||||
sload 1 ; load search string
|
sload 1 ; load search string
|
||||||
sconst "bankSearchFilter" ; push event name
|
sconst "bankSearchFilter" ; push event name
|
||||||
runelite_callback ; invoke callback
|
runelite_callback ; invoke callback
|
||||||
pop_int ; pop item id
|
pop_int ; pop item id
|
||||||
pop_string ; pop search string
|
pop_string ; pop search string
|
||||||
pop_string ; pop item name
|
|
||||||
istore 1 ; store return value for the below comparisons
|
istore 1 ; store return value for the below comparisons
|
||||||
iload 1
|
iload 1
|
||||||
iconst 0
|
iconst 0
|
||||||
|
|||||||
@@ -10,9 +10,6 @@
|
|||||||
; callback "setBankScroll"
|
; callback "setBankScroll"
|
||||||
; Fired before bank is calculated
|
; Fired before bank is calculated
|
||||||
; Used by the TabInterface to show fake bank items for tag tabs
|
; Used by the TabInterface to show fake bank items for tag tabs
|
||||||
;
|
|
||||||
; callback "isTabMenuActive"
|
|
||||||
; Used by the TabInterface to skip setting the bank title
|
|
||||||
sconst "beforeBankLayout"
|
sconst "beforeBankLayout"
|
||||||
runelite_callback
|
runelite_callback
|
||||||
get_varbit 5102
|
get_varbit 5102
|
||||||
@@ -966,12 +963,6 @@ LABEL848:
|
|||||||
add
|
add
|
||||||
istore 20
|
istore 20
|
||||||
jump LABEL769
|
jump LABEL769
|
||||||
SetTitle:
|
|
||||||
iconst 0 ; Compare variable
|
|
||||||
iconst 0 ;
|
|
||||||
sconst "isTabMenuActive"
|
|
||||||
runelite_callback ; skip setting the bank title if the tag tab menu is active
|
|
||||||
if_icmpne FinishBuilding
|
|
||||||
LABEL853:
|
LABEL853:
|
||||||
get_varbit 4170
|
get_varbit 4170
|
||||||
iconst 2
|
iconst 2
|
||||||
|
|||||||
Reference in New Issue
Block a user