Okay, I looked at your code... you are setting a
lot of globals.
Go get
WowGlobalFinder and load your files up in it. Check the "only set globals" option at the bottom. Work through the list and exterminate as many of those globals as possible. There's no reason to have any globals other than:
- slash commands,
- the name(s) of your SavedVariable(s),
- the names of frames that require names due to inheritance from Blizzard templates,
- the name of your main addon object (optional),
- and/or the names of your
main display frames (also optional).
Looking over your list, I'm seeing a lot of generic names like "CompactHidden", "UnitChanged", "unitType", "count", "BonusFrame", and "ChatFont" that definitely should not be global.
The most likely candidate for problem taint I'm seeing is FCF_SetTabPosition -- if you want to touch the chat tabs without breaking other parts of the UI by tainting UIFrameFlash, make sure you're loading LibChatAnims before you start touching, or (depending on what you're doing; I didn't look) you might be able to get away with using
hooksecurefunc to run your own stuff after the Blizz function runs instead of replacing it.