diff --git a/api/ui-widgets.lua b/api/ui-widgets.lua index 3abc6765..ba8dec6b 100644 --- a/api/ui-widgets.lua +++ b/api/ui-widgets.lua @@ -115,7 +115,7 @@ do -- statusbars function pfUI.api.CreateStatusBar(name, parent) local f = CreateFrame("Button", name, parent) - f:EnableMouse(nil) + f:EnableMouse(false) f.bar = f:CreateTexture(nil, "NORMAL") f.bar:SetPoint("TOPLEFT", f, "TOPLEFT", 0, 0) diff --git a/modules/infight.lua b/modules/infight.lua index 95531a8e..03ed2111 100644 --- a/modules/infight.lua +++ b/modules/infight.lua @@ -31,6 +31,7 @@ pfUI:RegisterModule("infight", "vanilla:tbc", function () pfUI.infight.screen = CreateFrame("Frame", "pfUICombatScreen", WorldFrame) pfUI.infight.screen:SetAllPoints(WorldFrame) + pfUI.infight.screen:EnableMouse(false) pfUI.infight.screen:Hide() pfUI.infight.UpdateConfig = function(self) diff --git a/modules/turtle-wow.lua b/modules/turtle-wow.lua index 43fc303a..c2ecd508 100644 --- a/modules/turtle-wow.lua +++ b/modules/turtle-wow.lua @@ -23,6 +23,61 @@ 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. + 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 + end + end + if GroupPetsClusterFrame then + GroupPetsClusterFrame:Hide() + GroupPetsClusterFrame:EnableMouse(false) + 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 + 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() hooksecurefunc("GroupFrame_Toggle", function() local inRaid = (GetNumRaidMembers() > 0) @@ -34,24 +89,9 @@ pfUI:RegisterModule("turtle-wow", "vanilla", function () end if pfUIHandles then - GROUP_ENABLED = "0" - for i = 1, 8 do - local f = _G["GroupClusterFrame"..i] - if f then f:Hide() end - end - if GroupPetsClusterFrame then GroupPetsClusterFrame:Hide() end + DisableTurtleGroupFrames() else - GROUP_ENABLED = "1" - GROUP_REPLACE_PARTY = "1" - 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() + EnableTurtleGroupFrames() end end) @@ -65,11 +105,7 @@ pfUI:RegisterModule("turtle-wow", "vanilla", function () end if pfUIHandles then - for i = 1, 8 do - local f = _G["GroupClusterFrame"..i] - if f then f:Hide() end - end - if GroupPetsClusterFrame then GroupPetsClusterFrame:Hide() end + DisableTurtleGroupFrames() end end) end)