- UiFrame_OnShow requests a full categorization pass only if the last one
was more than 60 seconds ago.
- Lock-only cache updates refresh just the affected item buttons
(AssignItemToItemButton) instead of running UpdateWindow().
- SortGroups() reuses a group's previous sorted order when none of its
items were re-categorized and it holds exactly the same items; any
full categorization pass invalidates all sorted orders.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwt5PZSpEDkXYzRuRhH
- Normalize the locked flag from GetContainerItemInfo (1/nil) to the
cached 1/0, so `preLocked ~= nowLocked` no longer treats every unlocked
slot as changed. Every cache update was re-running ItemInfo:Get() and
the tooltip scan for every slot.
- When only the locked state changes, record it directly and don't flag
the cache for re-categorization; the window still redraws.
- Update() re-categorizes only when items changed (cacheNeedsCategorize),
not for cosmetic lock changes.
- Build emptyGenericContainerSlots for every empty slot on each update,
since unchanged slots no longer pass through the change branch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwt5PZSpEDkXYzRuRhH