I think this should work for hiding the combo frame as well, for some reason it's not parented to the target frame.
Lua Code:
local f = CreateFrame('frame', nil, nil, 'SecureHandlerStateTemplate')
f:SetFrameRef('PlayerFrame', PlayerFrame)
f:SetFrameRef('TargetFrame', TargetFrame)
f:SetFrameRef('FocusFrame', FocusFrame)
f:SetFrameRef('ComboFrame', ComboFrame)
f:SetAttribute('_onstate-combat', [=[ -- Securely toggle visibility in combat
if newstate == 'show' then
self:GetFrameRef('PlayerFrame'):Show()
if UnitExists('target') then
self:GetFrameRef('TargetFrame'):Show()
end
if UnitExists('focus') then
self:GetFrameRef('FocusFrame'):Show()
end
else
self:GetFrameRef('PlayerFrame'):Hide()
self:GetFrameRef('TargetFrame'):Hide()
self:GetFrameRef('FocusFrame'):Hide()
self:GetFrameRef('ComboFrame'):Hide()
end
]=])
RegisterStateDriver(f, 'combat', '[combat] show; hide')
local function HideFrame(self) -- Insecurely hide out of combat if shown
if not InCombatLockdown() then self:Hide() end
end
PlayerFrame:HookScript('OnShow', HideFrame)
TargetFrame:HookScript('OnShow', HideFrame)
FocusFrame:HookScript('OnShow', HideFrame)
ComboFrame:HookScript('OnShow', HideFrame)
f:SetScript('OnEvent', function(self, event)
if GetComboPoints('player', 'target') > 0 then -- Show ComboFrame upon entering combat if we have points
ComboFrame:Show()
end
end)
f:RegisterEvent('PLAYER_REGEN_DISABLED')