9.1.5 possible conflict
Talimar opened this issue ยท 10 comments
Getting this error in combat. Not sure if it's Dominos but thought I'd report it anyway.
1x [ADDON_ACTION_BLOCKED] AddOn '*** ForceTaint_Strong ***' tried to call the protected function 'MultiBarBottomRightButton4:Show()'.
[string "@!BugGrabber\BugGrabber.lua"]:519: in function <!BugGrabber\BugGrabber.lua:519>
[string "=[C]"]: in function Show' [string "@FrameXML\ActionButton.lua"]:348: in function <FrameXML\ActionButton.lua:332> [string "=[C]"]: in function
Update'
[string "@FrameXML\ActionButton.lua"]:854: in function `OnEvent'
[string "@FrameXML\ActionButton.lua"]:265: in function <FrameXML\ActionButton.lua:257>
Without much context, its hard to actually diagnose these.
It seems to happen the first time I engage in combat after logging in. after that it never occurs again.
I can test more if you have any ideas.
Implementing the follow code in my UI seems to eliminate the error:
VehicleLeaveButton.NewShow = VehicleLeaveButton.Show VehicleLeaveButton.NewHide = VehicleLeaveButton.Hide MainMenuBar.NewSetScale = MainMenuBar.SetScale MainMenuBar.NewClearAllPointse = MainMenuBar.ClearAllPoints MainMenuBar.NewSetPoint = MainMenuBar.SetPoint MultiBarRight.NewSetShown = MultiBarRight.SetShown VehicleLeaveButton.Show = function() end MainMenuBar.SetScale = function() end MainMenuBar.ClearAllPoints = function() end MultiBarRight.SetShown = function() end MainMenuBar.SetPoint = function() end VehicleLeaveButton.Hide = function() end
Not the cleanest solution, but i think the bug arises from anything addon that touches a frame that is managed by the function "UIParent_ManageFramePositions" , located at Interface\FrameXML\UIParent.lua line 3474
Upon further investigation, any addon that touches a frame that the Default UI wants to relocate, must set that frame as user placed. the following seems to clear up the bug for me:
`
local taintItems = {
"MainMenuBar",
"PlayerPowerBarAlt",
"VehicleLeaveButton",
"MultiBarRight",
"MicroButtonAndBagsBar",
"ObjectiveTrackerFrame",
}
for i, taintItem in pairs(taintItems) do
local item = _G[taintItem]
if item then
item:SetMovable(true)
item:SetUserPlaced(true)
end
end
for i = 1, 12 do
local btn = _G["ActionButton"..i]
if btn then
btn:SetMovable(true)
btn:SetUserPlaced(true)
end
end
`
You may want to see what your UI looks like when running that without Dominos enabled. I have a feeling you'll see stuff in weird places. SetUserPlaced
tells the UI to save the positions of elements.
To resolve that, we'll want to add a logout event to revert what we've done (just thing:SetUserPlaced(false)
)
The core issue for this bug arises when any addon modifies a frame that is managed in file "Interface\FrameXML\UIParent.lua" line 3155; function FramePositionDelegate:UIParentManageFramePositions() or frames listed in the same file, in the table located at line 2517. However, these functions include checks for element:IsUserPlaced(). Which is why I think it will be necessary do do as you suggest.
local userPlaced,isUserPlaced = {}, {}
local function RegisterForUserPlaced(frameName)
tinsert(userPlaced, frameName)
end
RegisterForUserPlaced("MainMenuBar")
RegisterForUserPlaced("PlayerPowerBarAlt")
RegisterForUserPlaced("MainMenuBarVehicleLeaveButton")
RegisterForUserPlaced("MultiBarRight")
RegisterForUserPlaced("MicroButtonAndBagsBar")
RegisterForUserPlaced("ObjectiveTrackerFrame")
RegisterForUserPlaced("TalkingHeadFrame")
local function RegisterUserPlaced(frameName)
local element = _G[frameName]
if element then
isUserPlaced[frameName] = element
element:SetMovable(true)
element:SetUserPlaced(true)
end
end
local function OnLogout()
for frameName, element in pairs(isUserPlaced) do
element:SetUserPlaced(false)
element:SetMovable(false)
end
end
local function OnLogin()
for i, frameName in pairs(userPlaced) do
RegisterUserPlaced(frameName)
end
for i = 1, 12 do
RegisterUserPlaced("ActionButton"..i)
end
end
the latest update caused to mod not to work.
when I clicked a spell off an action bar the sound mutes the spell doesnt cast and I have to click someplace on the screen to get the sound working again