Add loot search and transmog outfit support#9
Merged
Conversation
Original addon name: EasyFind
Previously only hid the bar if the editBox had focus. Now hides whenever the bar is visible, regardless of focus state.
Saved transmog outfits appear as searchable entries in the UI search bar. Click to equip via a temporary action slot (PreClick places outfit, UseAction equips, PostClick cleans up). Adds Transmogrification panel entry to open the full wardrobe UI. Adds "tmog" as a keyword across all transmog related entries. Outfits filter defaults to off, togglable in the filter dropdown.
Find an empty slot fresh each click instead of caching one at init. Skip class-restricted slot ranges (121-168). Verify placement succeeded before firing UseAction. PostClick always cleans up the slot so it recycles naturally. Falls back to opening TransmogFrame if no slot is available.
Collection pins (mounts, toys, pets, outfits) are now stored per-character. UI pins remain account-wide. Clicking a toy or outfit on cooldown keeps results open instead of closing them. Pinned outfit names and icons sync when outfits are renamed or deleted mid-session.
Override-bind Enter to the selected result button when it is an outfit or toy, then propagate the keypress so WoW's secure input system clicks the button directly. This gives keyboard navigation the same secure equip path as mouse clicks.
Show gray separator between all consecutive pinned items using bottom-anchored logic. Reduce post-creation focus block from 1 second to 2 frames so the search bar is clickable almost immediately after login/reload.
Original addon name: EasyFind
Scans current-tier dungeons and raids via Encounter Journal API and injects items as searchable entries. Results grouped by slot then instance. Click opens EJ to boss, Shift+click opens dressing room, hover shows item tooltip. Loot filter in dropdown (default off). Includes stat keyword enrichment, slot/source keyword generation, and EJ state save/restore.
Resolve EJ APIs after EncounterJournal_LoadUI (not file scope). Match WhereLoot's API call order: SelectInstance, SelectEncounter, SetDifficulty, SetSlotFilter, SetLootFilter per encounter. Use Enum.ItemSlotFilterType.NoFilter instead of 0. Separate loot keywords by type (slot, stat, source) for toggle-aware scoring. Search by Slot only matches slot keywords, Search by Stats only matches stat keywords. Multi-word queries assign each word to its best keyword type.
Class list with hover-to-expand spec submenus. Spec selector row shown under Loot filter with separator. Multi-spec scan support in Database.lua. Known issues: hover detection and submenu opening need debugging.
Spec flyout not yet functional (frame-level issues). DevLog now auto-saves to EasyFindDevDB.lastOutput. All dev modules updated to use DevLog. Frame inspector uses DevLog for quick inspect output.
Root cause: BackdropTemplate intercepts mouse events at the same frame level as child buttons. Fixed by using plain Frame with manual background texture instead of BackdropTemplate for the flyout panels. Buttons now receive OnEnter properly. Added spec icons next to spec names in the sub-flyout. Replaced text arrows with ForwardArrowIcon atlas.
Inset background textures inside border edges. Close spec flyouts when search results hide. Remove debug print statements from loot scan.
Hide flyouts and dropdown when a spec is selected. Green dot on class rows indicates at least one spec from that class is active. SyncFlyoutState updates both spec checkboxes and class indicators.
Clicking a class row toggles all its specs on/off. Clicking a spec toggles just that spec. Nothing closes until the user clicks outside the menus. Loot re-scan deferred to next frame.
Prevent OnEditFocusLost from hiding results when mouse is over spec/class flyouts or filter dropdown. Change class active indicator from small dot to full row background tint.
Cache loot scan at login so spec/difficulty toggles are instant. Replace multi-select spec system with single-select class/spec dropdown matching the Encounter Journal UI. Add single-select difficulty dropdown. Always search by name, slot, stats, and source (remove toggle checkboxes). Scale filter dropdown with font size. Extract shared radio button and popup styling.
Loot scoring: match query words against item name words individually instead of only checking full-query prefix. Fixes "bond of light" disappearing when typing "bond of". Keyword scoring: require all query words to match at least one keyword. Prevents common words like "of" from producing false positives across unrelated entries. Nav keyboard: propagate character keys to the game when no selection is active and editbox is unfocused, fixing WASD movement typing into the search bar after pressing Escape. Result rows: reset tabText anchors on header tab render so recycled rows don't inherit stale repBar anchors (100px lost). Skip height expansion for single-line header tabs. Also adds key-repeat support for dropdown/popup/map arrow navigation and tightens spec-to-difficulty dropdown spacing.
Add step handlers for navigating the Encounter Journal: ejInstance, ejBoss, ejLootTab, and ejLootItem. The item handler strips inline color codes (|cAARRGGBB...|r) from EJ loot text before name comparison. Add prerequisite validation for EJ boss selection and loot tab so the guide rewinds when the user clicks a different boss or switches tabs mid-guide. Add FastForwardSteps to advance through already-satisfied steps immediately instead of waiting one per ticker tick. Add /ef ejdump diagnostic for EJ ScrollBox inspection.
Add Database:SyncEJLootFilter() to set the EJ loot filter from EasyFind's filter selection. Called on filter change and before loot navigation so the target item is visible in the EJ. Strip color codes in the DirectOpen ejLootItem path. Sort result category groups by best match score instead of hardcoded order so the most relevant category (e.g. Loot for slot searches) appears first. Increase category separator from 1px to 1.5px and pool from 2 to 6 for all category boundaries.
When opening the transmog window via search (not at a vendor), hide Purchase Outfit Slot, Save Outfit, the money frame, and the Situations tab. Disable right-click on outfit name buttons (Change Name/Icon doesn't work without a vendor). Show messages directing users to visit a transmogrifier. All restored when the frame closes.
Display the transmog-outfit-spellFrame-active atlas overlay on outfit icons that are locked. Add lock status and usage hint to the outfit hover tooltip. Lock toggling requires Blizzard's secure ActionButton handler (ChangeDisplayedOutfit is protected), so the tooltip directs users to the action bar or transmog window for toggling.
SyncEJLootFilter now also calls EJ_SetDifficulty to match EasyFind's lootDifficulty setting, so the EJ shows loot for the correct difficulty when navigating.
This reverts commit c248a28.
Show the clear (X) button whenever a navigation guide is active, not just when there is search text. Clicking it clears both text and active highlights/arrows. Expose Highlight:IsActive() for the visibility check and notify the clear button on guide start/cancel.
Reset All Settings now resets lootFilter to current spec, lootDifficulty to normal, and wipes all pinned items (UI and map). Add GetEJDifficultyID helper for setting EJ difficulty during loot navigation.
Move EJ difficulty resolution into Database:SetEJDifficulty so both DirectOpen and Highlight ticker share one call site. Use a per-step flag to avoid re-calling SetDifficulty every 0.1s tick while on the ejLootTab step.
Add 1.5.0 changelog covering loot search, transmog outfits, browse mode, EJ filter sync, dynamic category ordering, and related fixes. Update What's New popup and README features list. Bump TOC version.
Add C_Item, SetOverrideBindingClick, ClearOverrideBindings to luacheckrc. Move TransmogFrame to globals for field writes. Remove unused variables and dead code. Add forward declaration for LayoutSpecPopup.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan