fix: bank wierd behavior
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
## Title: Guda
|
## Title: Guda
|
||||||
## Notes: All-in-one bag and bank addon for World of Warcraft 1.12.1 (Turtle WoW)
|
## Notes: All-in-one bag and bank addon for World of Warcraft 1.12.1 (Turtle WoW)
|
||||||
## Author: Vati
|
## Author: Vati
|
||||||
## Version: 2.3.1
|
## Version: 2.3.2
|
||||||
## SavedVariables: Guda_DB
|
## SavedVariables: Guda_DB
|
||||||
## SavedVariablesPerCharacter: Guda_CharDB
|
## SavedVariablesPerCharacter: Guda_CharDB
|
||||||
## OptionalDeps: pfUI
|
## OptionalDeps: pfUI
|
||||||
|
|||||||
+44
-28
@@ -234,9 +234,9 @@ function Guda_BankFrame_OnHide(self)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Close the actual Blizzard bank too
|
-- Close the server-side bank session only when viewing our own real bank;
|
||||||
local blizzardBankFrame = getglobal("BankFrame")
|
-- saved banks of other chars have no active NPC session to close.
|
||||||
if blizzardBankFrame and blizzardBankFrame:IsShown() then
|
if not currentViewChar then
|
||||||
CloseBankFrame()
|
CloseBankFrame()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1848,28 +1848,17 @@ function Guda_BankFrame_SwitchToBlizzardUI()
|
|||||||
customBankFrame:Hide()
|
customBankFrame:Hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Restore Blizzard bank frame
|
-- Restore Blizzard bank frame (re-installs native OnHide)
|
||||||
local blizzardBankFrame = getglobal("BankFrame")
|
BankFrame:ShowBlizzardBank()
|
||||||
if blizzardBankFrame then
|
|
||||||
blizzardBankFrame:SetAlpha(1.0)
|
-- Show the Guda button if it exists
|
||||||
blizzardBankFrame:ClearAllPoints()
|
BankFrame:ShowGudaButton()
|
||||||
blizzardBankFrame:SetPoint("TOPLEFT", UIParent, "TOPLEFT", 0, -104)
|
|
||||||
blizzardBankFrame:Show()
|
|
||||||
|
|
||||||
-- Show the Guda button if it exists
|
|
||||||
BankFrame:ShowGudaButton()
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Switch from Blizzard bank UI back to Guda UI
|
-- Switch from Blizzard bank UI back to Guda UI
|
||||||
function Guda_BankFrame_SwitchToGudaUI()
|
function Guda_BankFrame_SwitchToGudaUI()
|
||||||
-- Move Blizzard bank frame off-screen (keep it shown so bank session stays active)
|
-- Hide Blizzard bank frame (OnHide is neutralized so the session stays open)
|
||||||
local blizzardBankFrame = getglobal("BankFrame")
|
BankFrame:HideBlizzardBank()
|
||||||
if blizzardBankFrame then
|
|
||||||
blizzardBankFrame:ClearAllPoints()
|
|
||||||
blizzardBankFrame:SetPoint("TOPLEFT", UIParent, "TOPLEFT", -10000, 10000)
|
|
||||||
blizzardBankFrame:SetAlpha(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Hide the Guda button
|
-- Hide the Guda button
|
||||||
local gudaButton = getglobal("BankFrame_GudaButton")
|
local gudaButton = getglobal("BankFrame_GudaButton")
|
||||||
@@ -2104,15 +2093,39 @@ function BankFrame:UpdateFooterVisibility()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- BankFrame's native OnHide calls CloseBankFrame(), which ends the server
|
||||||
|
-- bank session. We neutralize it while in Guda mode so :Hide() is safe.
|
||||||
|
local bankFrameOriginalOnHide = nil
|
||||||
|
|
||||||
|
function BankFrame:HideBlizzardBank()
|
||||||
|
local blizzardBankFrame = getglobal("BankFrame")
|
||||||
|
if not blizzardBankFrame then return end
|
||||||
|
|
||||||
|
if bankFrameOriginalOnHide == nil then
|
||||||
|
bankFrameOriginalOnHide = blizzardBankFrame:GetScript("OnHide") or false
|
||||||
|
end
|
||||||
|
blizzardBankFrame:SetScript("OnHide", nil)
|
||||||
|
|
||||||
|
-- Route through HideUIPanel so the panel stack gets cleaned up; otherwise
|
||||||
|
-- Escape/GameMenu thinks a panel is still open and won't show the menu.
|
||||||
|
if blizzardBankFrame:IsShown() then
|
||||||
|
HideUIPanel(blizzardBankFrame)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function BankFrame:ShowBlizzardBank()
|
||||||
|
local blizzardBankFrame = getglobal("BankFrame")
|
||||||
|
if not blizzardBankFrame then return end
|
||||||
|
|
||||||
|
if bankFrameOriginalOnHide then
|
||||||
|
blizzardBankFrame:SetScript("OnHide", bankFrameOriginalOnHide)
|
||||||
|
end
|
||||||
|
ShowUIPanel(blizzardBankFrame)
|
||||||
|
end
|
||||||
|
|
||||||
-- Initialize
|
-- Initialize
|
||||||
function BankFrame:Initialize()
|
function BankFrame:Initialize()
|
||||||
-- Move Blizzard bank frame off-screen on load (keep it shown so bank session stays active)
|
self:HideBlizzardBank()
|
||||||
local blizzardBankFrame = getglobal("BankFrame")
|
|
||||||
if blizzardBankFrame then
|
|
||||||
blizzardBankFrame:ClearAllPoints()
|
|
||||||
blizzardBankFrame:SetPoint("TOPLEFT", UIParent, "TOPLEFT", -10000, 10000)
|
|
||||||
blizzardBankFrame:SetAlpha(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Create Guda button on Blizzard BankFrame
|
-- Create Guda button on Blizzard BankFrame
|
||||||
self:CreateGudaButtonOnBlizzardUI()
|
self:CreateGudaButtonOnBlizzardUI()
|
||||||
@@ -2124,6 +2137,9 @@ function BankFrame:Initialize()
|
|||||||
|
|
||||||
-- Update when bank is opened
|
-- Update when bank is opened
|
||||||
addon.Modules.Events:OnBankOpen(function()
|
addon.Modules.Events:OnBankOpen(function()
|
||||||
|
-- Blizzard's default handler Show()s BankFrame on BANKFRAME_OPENED; re-hide it.
|
||||||
|
addon.Modules.BankFrame:HideBlizzardBank()
|
||||||
|
|
||||||
-- Delay showing custom bank to let TransmogUI finish processing (uses pooled timer)
|
-- Delay showing custom bank to let TransmogUI finish processing (uses pooled timer)
|
||||||
Guda_ScheduleTimer(0.2, function()
|
Guda_ScheduleTimer(0.2, function()
|
||||||
-- Show current character's bank in interactive mode
|
-- Show current character's bank in interactive mode
|
||||||
|
|||||||
Reference in New Issue
Block a user