Update turtle-wow.lua

This commit is contained in:
Meow
2026-03-22 13:11:54 +01:00
parent 4c1c4a5176
commit 7c73ccb02e
+14 -55
View File
@@ -23,21 +23,16 @@ pfUI:RegisterModule("turtle-wow", "vanilla", function ()
-- Set GROUP_REPLACE_PARTY early so Turtle's own init can use it -- Set GROUP_REPLACE_PARTY early so Turtle's own init can use it
GROUP_REPLACE_PARTY = "1" GROUP_REPLACE_PARTY = "1"
-- Disable Turtle GroupUI cluster frames and member frames so they -- Hide Turtle GroupUI frames and disable mouse when pfUI handles group/raid.
-- cannot intercept mouse clicks meant for pfUI unit frames or nameplates. -- When pfUI does NOT handle them, we simply don't interfere - Turtle manages itself.
-- Important: Do NOT unregister events - Turtle needs RAID_ROSTER_UPDATE etc.
-- to react when group converts to raid (and vice versa).
local function DisableTurtleGroupFrames() local function DisableTurtleGroupFrames()
GROUP_ENABLED = "0"
-- Stop GroupFrame from firing events that re-show cluster frames
GroupFrame:UnregisterAllEvents()
GroupFrame:Hide()
for i = 1, 8 do for i = 1, 8 do
local f = _G["GroupClusterFrame"..i] local f = _G["GroupClusterFrame"..i]
if f then if f then
f:Hide() f:Hide()
f:EnableMouse(false) f:EnableMouse(false)
-- Disable mouse on all child member frames (Buttons with click handlers)
for _, child in pairs({f:GetChildren()}) do for _, child in pairs({f:GetChildren()}) do
child:EnableMouse(false) child:EnableMouse(false)
end end
@@ -49,62 +44,26 @@ pfUI:RegisterModule("turtle-wow", "vanilla", function ()
end end
end end
local function EnableTurtleGroupFrames() -- Check if pfUI is handling group or raid for the current situation
GROUP_ENABLED = "1" local function pfUIHandlesGroupOrRaid()
GROUP_REPLACE_PARTY = "1" if GetNumRaidMembers() > 0 then
return C.unitframes.raid and C.unitframes.raid.visible == "1"
-- Re-enable mouse on cluster frames and their children else
for i = 1, 8 do return C.unitframes.group and C.unitframes.group.visible == "1"
local f = _G["GroupClusterFrame"..i]
if f then
f:EnableMouse(true)
for _, child in pairs({f:GetChildren()}) do
child:EnableMouse(true)
end
end
end end
if GroupPetsClusterFrame then
GroupPetsClusterFrame:EnableMouse(true)
end
GroupFrame:RegisterEvent("PARTY_MEMBERS_CHANGED")
GroupFrame:RegisterEvent("RAID_ROSTER_UPDATE")
GroupFrame:RegisterEvent("RAID_TARGET_UPDATE")
GroupFrame:RegisterEvent("UNIT_NAME_UPDATE")
GroupFrame:RegisterEvent("UNIT_PET")
GroupFrame:RegisterEvent("PLAYER_TARGET_CHANGED")
GroupFrame:RegisterEvent("CHAT_MSG_ADDON")
GroupFrame:Show()
GroupFrame_Update()
end end
HookAddonOrVariable("GroupFrame", function() HookAddonOrVariable("GroupFrame", function()
-- After Turtle's own init, hide frames if pfUI handles them
hooksecurefunc("GroupFrame_Toggle", function() hooksecurefunc("GroupFrame_Toggle", function()
local inRaid = (GetNumRaidMembers() > 0) if pfUIHandlesGroupOrRaid() then
local pfUIHandles
if inRaid then
pfUIHandles = C.unitframes.raid and C.unitframes.raid.visible == "1"
else
pfUIHandles = C.unitframes.group and C.unitframes.group.visible == "1"
end
if pfUIHandles then
DisableTurtleGroupFrames() DisableTurtleGroupFrames()
else
EnableTurtleGroupFrames()
end end
end) end)
-- After every group/raid update, re-hide if pfUI handles them
hooksecurefunc("GroupFrame_Update", function() hooksecurefunc("GroupFrame_Update", function()
local inRaid = (GetNumRaidMembers() > 0) if pfUIHandlesGroupOrRaid() then
local pfUIHandles
if inRaid then
pfUIHandles = C.unitframes.raid and C.unitframes.raid.visible == "1"
else
pfUIHandles = C.unitframes.group and C.unitframes.group.visible == "1"
end
if pfUIHandles then
DisableTurtleGroupFrames() DisableTurtleGroupFrames()
end end
end) end)