Commit Graph
5 Commits
Author SHA1 Message Date
OEVGandClaude Opus 5.5 0742732e41 Instant restack and bag swapping with C_Container.MoveItem
MoveItems() uses ClassicAPI's C_Container.MoveItem() when available (and
no move equips a bag): each round sends every move whose slots are free
and unlocked, then waits for BAG_UPDATE_DELAYED (1 s fallback) before the
next round. Restack() queues exact amounts; EmptyBag()/FillBag() move
whole stacks. Locked slots are retried up to 5 times, stock-state
handling matches ProcessMoveQueue(), and the cursor-based queue remains
the fallback. Approach taken from brues-code/pfUI libs/libbagsort.lua.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwt5PZSpEDkXYzRuRhH
2026-11-02 03:49:40 +00:00
OEVGandClaude Opus 5.5 5f0c1c95d6 Re-categorize only changed items; per-frame work only on hovered button
- CategorizeItems() keeps each item's category unless something it was
  based on changed (item, bag/slot, bag type, count, charges, stock
  state, tooltip). A full pass runs on window open, forced resort,
  rebuilt lookup tables, character switch and any non-bag event.
- ActiveQuestItems: raise BAGSHUI_ACTIVE_QUEST_ITEM_UPDATE only when the
  quest item list or counts changed, not after every QUEST_LOG_UPDATE.
- Item buttons: OnUpdate is set on mouse enter and removes itself after
  the mouse leaves; the base template OnUpdate is cleared. Stock badges
  are refreshed once a minute from the window's OnUpdate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwt5PZSpEDkXYzRuRhH
2026-11-01 20:57:18 +00:00
OEVGandClaude Opus 5.5 8f6277d521 Skip unchanged slots and lock-only changes in cache updates
- 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
2026-11-01 20:46:22 +00:00
OEVGandClaude Opus 5.5 509309d9f0 Redraw bag changes on BAG_UPDATE_DELAYED (ClassicAPI)
BAG_UPDATE now marks the inventory as changed and BAG_UPDATE_DELAYED
queues the redraw for the next frame, instead of every BAG_UPDATE
restarting a 0.07s debounce. While a bag is being swapped between slots
the old debounce is kept so the redraw waits for the swap to settle.
A 0.5s safety-net update covers a missing BAG_UPDATE_DELAYED.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwt5PZSpEDkXYzRuRhH
2026-11-01 02:34:45 +00:00
OEVG 896f46f0d1 Bagshui 1.6.4
enUS Localization Update Announcement / localization-update-announcement (push) Canceled after 0s
2026-10-30 15:55:43 +00:00