View Single Post
07-28-12, 07:54 AM   #6
Foxlit
A Warpwood Thunder Caller
AddOn Author - Click to view addons
Join Date: Nov 2006
Posts: 91
Originally Posted by Vladinator View Post
About dropdown menus, for example the world markers, the dropdown menu don't work after a while since the dropdown menu is recycled and it gets tainted when addons use it too, so it stops working. Did they do something to fix this issue?
4.3.0 made dropdown menus harder to taint. If you've got a non-trivial example of things going wrong (i.e. not "Focus unit" being tainted for custom unit frames), you should post it somewhere.

[On a sidenote, the presented analysis as to the cause of world markers taint is wrong -- addons using UIDropDownMenu were not the problem; rather, the issue was caused by addons that tainted execution paths on which FrameXML used UIDropDownMenu halfway through the interaction with that API, mostly by tainting used globals.]


[...] buffs are easy to taint, just changing buff border with a script is enough to make you unable to right-click buffs since canceling is now protected. The issue now is that if you wish to change the buffs layout, even JUST the time format on the auras, you need to make a whole addon and write a ton of code as anything will break the ability to cancel buffs. Are there plans to change this or will we have to use the SecureAuraHeaderTemplate and write a hundred lines just to modify the time format?
I think the larger issue is that some people do not have an accurate model of how taint works, and so are constantly surprised that the code they wrote interacts badly with it. There are clearly solutions to your "modify the time format" problem that do not involve writing a hundred lines of code and do not cause issues with taint.

It's also my impression that CancelUnitBuff is only protected in combat (though fails silently if called insecurely for shapeshift buffs). Are there any situations when you'd want to cancel buffs in combat?
__________________
... and you do get used to it, after a while.