My custom oUF layout uses individual oUF_partyN frames instead of the oUF_Party header, as I need the party frames to grow upwards as more players join the group. However, for some reason, the frames don't always update when joining or leaving the group, for example, entering an arena, on occasion the frames won't match up to the actual players (duplicate frames for one player, clicking one frame targets a different party member etc).
Reloading the UI fixes it.
Is there any way to get oUF to respawn its frames, or somehow force a party frame refresh?
Code used for spawning the frames:
local party = {}
party = oUF:Spawn('header', 'oUF_Party')
party[1] = oUF:Spawn("party1", "oUF_Party1")
party[1]:SetPoint('RIGHT', player, 'CENTER', 118, 75)
for i =2, 4 do
party[i] = oUF:Spawn("party"..i, "oUF_Party"..i)
party[i]:SetPoint("TOP", party[i-1], "BOTTOM", 0, 105)
end
Code used for toggling the party frames depending on number of party members (fairly standard oUF code):
local partyToggle = CreateFrame("Frame")
partyToggle:RegisterEvent("PLAYER_LOGIN")
partyToggle:RegisterEvent("RAID_ROSTER_UPDATE")
partyToggle:RegisterEvent("PARTY_LEADER_CHANGED")
partyToggle:RegisterEvent("PARTY_MEMBERS_CHANGED")
partyToggle:SetScript("OnEvent", function(self)
if InCombatLockdown() then
self:RegisterEvent("PLAYER_REGEN_ENABLED")
else
self:UnregisterEvent("PLAYER_REGEN_ENABLED")
local numraid = GetNumRaidMembers()
if numraid > 0 and (numraid > 5 or numraid ~= GetNumPartyMembers() + 1) then
party:Hide()
for i = 1, 4 do
UnregisterUnitWatch(party[i])
party[i]:Hide()
end
else
party:Show()
for i = 1, 4 do
RegisterUnitWatch(party[i])
party[i]:Show()
end
end
end
end)