From 7c73ccb02e29303a6c4401a1e63dbe536c48945f Mon Sep 17 00:00:00 2001 From: Meow <30401521+me0wg4ming@users.noreply.github.com> Date: Sun, 22 Mar 2026 13:11:54 +0100 Subject: [PATCH] Update turtle-wow.lua --- modules/turtle-wow.lua | 69 +++++++++--------------------------------- 1 file changed, 14 insertions(+), 55 deletions(-) diff --git a/modules/turtle-wow.lua b/modules/turtle-wow.lua index c2ecd508..baa5a78b 100644 --- a/modules/turtle-wow.lua +++ b/modules/turtle-wow.lua @@ -23,21 +23,16 @@ pfUI:RegisterModule("turtle-wow", "vanilla", function () -- Set GROUP_REPLACE_PARTY early so Turtle's own init can use it GROUP_REPLACE_PARTY = "1" - -- Disable Turtle GroupUI cluster frames and member frames so they - -- cannot intercept mouse clicks meant for pfUI unit frames or nameplates. + -- Hide Turtle GroupUI frames and disable mouse when pfUI handles group/raid. + -- 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() - GROUP_ENABLED = "0" - - -- Stop GroupFrame from firing events that re-show cluster frames - GroupFrame:UnregisterAllEvents() - GroupFrame:Hide() - for i = 1, 8 do local f = _G["GroupClusterFrame"..i] if f then f:Hide() f:EnableMouse(false) - -- Disable mouse on all child member frames (Buttons with click handlers) for _, child in pairs({f:GetChildren()}) do child:EnableMouse(false) end @@ -49,62 +44,26 @@ pfUI:RegisterModule("turtle-wow", "vanilla", function () end end - local function EnableTurtleGroupFrames() - GROUP_ENABLED = "1" - GROUP_REPLACE_PARTY = "1" - - -- Re-enable mouse on cluster frames and their children - for i = 1, 8 do - local f = _G["GroupClusterFrame"..i] - if f then - f:EnableMouse(true) - for _, child in pairs({f:GetChildren()}) do - child:EnableMouse(true) - end - end + -- Check if pfUI is handling group or raid for the current situation + local function pfUIHandlesGroupOrRaid() + if GetNumRaidMembers() > 0 then + return C.unitframes.raid and C.unitframes.raid.visible == "1" + else + return C.unitframes.group and C.unitframes.group.visible == "1" 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 HookAddonOrVariable("GroupFrame", function() + -- After Turtle's own init, hide frames if pfUI handles them hooksecurefunc("GroupFrame_Toggle", function() - local inRaid = (GetNumRaidMembers() > 0) - 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 + if pfUIHandlesGroupOrRaid() then DisableTurtleGroupFrames() - else - EnableTurtleGroupFrames() end end) + -- After every group/raid update, re-hide if pfUI handles them hooksecurefunc("GroupFrame_Update", function() - local inRaid = (GetNumRaidMembers() > 0) - 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 + if pfUIHandlesGroupOrRaid() then DisableTurtleGroupFrames() end end)