From 90ecd582a2e43b7da66d40d916d30e04f0015f5c Mon Sep 17 00:00:00 2001 From: Sattva Date: Mon, 29 May 2023 06:13:55 +0300 Subject: [PATCH] HideMiniAddonButtons - fix, improve Fixed Minimap_OnEnter function sometimes not being able to do child:GetCenter() because minimap button is hidden by some addon. Fixed the loop taking only first value of `keepVisible` table Added more buttons to always show, credit to @s0h2x Co-authored-by: s0h2x --- Changelog and Notes.txt | 5 +- Leatrix_Plus.lua | 116 ++++++++++++++++++++++++---------------- 2 files changed, 75 insertions(+), 46 deletions(-) diff --git a/Changelog and Notes.txt b/Changelog and Notes.txt index 3463b1f..df48a89 100644 --- a/Changelog and Notes.txt +++ b/Changelog and Notes.txt @@ -19,6 +19,8 @@ General - Check all Preset profiles to make sure user doesn't have option be EnhanceMinimap - "Example Input" needs Locales! +InviteFromWhispers - Need to fix visual bag in config panel. + -------------------------------------------------------------------------------- -- What needs to be tested: @@ -30,7 +32,6 @@ Auto-Ress in BG - With option "Exclude Alterac" will it not auto-res in Alter Accept Ress - Will it ever accept ressurection if ressurecter in combat ? - -------------------------------------------------------------------------------- -- Stuff to-do: -------------------------------------------------------------------------------- @@ -112,4 +113,6 @@ Minimap - Zone Text Bar should toggle the minimap. Minimap - Tracking button animation fade-in-out. +Minimap - distance of buttons OnEnter alpha trigger user option? + diff --git a/Leatrix_Plus.lua b/Leatrix_Plus.lua index 802f924..76a15d6 100644 --- a/Leatrix_Plus.lua +++ b/Leatrix_Plus.lua @@ -4424,54 +4424,76 @@ function LeaPlusLC:FriendCheck(name) -- This function will capture all children attached to the minimap, and add them to our table. local function GetMinimapChildren() - -- First, we clear our table to ensure there are no duplicates. - wipe(minimapButtons) + -- First, we clear our table to ensure there are no duplicates. + wipe(minimapButtons) - -- Next, we get the total number of children attached to the minimap frame. - local numChildren = Minimap:GetNumChildren() + -- Next, we get the total number of children attached to the minimap frame. + local numChildren = Minimap:GetNumChildren() - -- Now, we loop through each child and check if it's a minimap button. - for i = 1, numChildren do - local child = select(i, Minimap:GetChildren()) - if child and child:IsObjectType("Button") and child:GetName() then - -- If the child is a minimap button, we add it to our table. - minimapButtons[child:GetName()] = child - end - end + -- Now, we loop through each child and check if it's a minimap button. + for i = 1, numChildren do + local child = select(i, Minimap:GetChildren()) + if child and child:IsObjectType("Button") and child:GetName() then + -- If the child is a minimap button, we add it to our table. + minimapButtons[child:GetName()] = child + end + end end local function HideMinimapButtons() local searchStr = LeaPlusDB["MiniExcludeList"] + -- Thanks to https://github.com/s0h2x/pretty_minimap for good list of buttons to ignore! local keepVisible = { - "ZGV" + "ZGV", + "Spy", + "MiniMapBattlefieldFrame", + "GatherMatePin", + "HandyNotesPin", + "Archy", + "GatherNote", + "poiWorldMapPOIFrame", + "WorldMapPOIFrame", + "QuestMapPOI" } if searchStr == "" then - -- Set alpha of all buttons to 0 if MiniExcludeList is empty - for _, button in pairs(minimapButtons) do - if not string.find(button:GetName(), keepVisible[1]) then - -- Button name doesn't contain substring 'keepVisible[1]', so adjust its alpha - button:SetAlpha(0) - end - end - else - -- Set alpha of buttons that match MiniExcludeList to 0 - local excludedNames = {strsplit(",", searchStr)} -- Split MiniExcludeList by comma - for name, button in pairs(minimapButtons) do - if not string.find(button:GetName(), keepVisible[1]) then - -- Check if button name doesn't contain substring 'keepVisible[1]' - local match = false - for _, excludedName in ipairs(excludedNames) do - if string.find(name, strtrim(excludedName)) ~= nil then - match = true - break - end - end - if not match then - button:SetAlpha(0) - end - end - end - end + -- Set alpha of all buttons to 0 if MiniExcludeList is empty + for _, button in pairs(minimapButtons) do + local match = false + for _, visible in ipairs(keepVisible) do + if string.find(button:GetName(), visible) then + match = true + break + end + end + if not match then + button:SetAlpha(0) + end + end + else + -- Set alpha of buttons that match MiniExcludeList to 0 + local excludedNames = {strsplit(",", searchStr)} -- Split MiniExcludeList by comma + for name, button in pairs(minimapButtons) do + local match = false + for _, visible in ipairs(keepVisible) do + if string.find(button:GetName(), visible) then + match = true + break + end + end + if not match then + -- Check if button name doesn't contain any substring in 'keepVisible' + for _, excludedName in ipairs(excludedNames) do + if string.find(name, strtrim(excludedName)) ~= nil then + match = true + break + end + end + if not match then + button:SetAlpha(0) + end + end + end + end end @@ -4480,6 +4502,7 @@ function LeaPlusLC:FriendCheck(name) + -- This function shows the minimap buttons by setting their alpha to 1. local function ShowMinimapButtons() for name, button in pairs(minimapButtons) do @@ -4500,13 +4523,15 @@ function LeaPlusLC:FriendCheck(name) local child = select(i, Minimap:GetChildren()) if child and child:IsObjectType("Button") then local x, y = child:GetCenter() - x, y = x * child:GetEffectiveScale(), y * child:GetEffectiveScale() - local cx, cy = GetCursorPosition() - local dist = sqrt((x - cx) ^ 2 + (y - cy) ^ 2) / 1.5 -- Double the distance + if x and y then -- Check if x and y are not nil + x, y = x * child:GetEffectiveScale(), y * child:GetEffectiveScale() + local cx, cy = GetCursorPosition() + local dist = sqrt((x - cx) ^ 2 + (y - cy) ^ 2) / 3 -- Triple the distance of buttons OnEnter alpha trigger - if dist < child:GetWidth() / 2 then - mouseOverChild = true - break + if dist < child:GetWidth() / 2 then + mouseOverChild = true + break + end end end end @@ -4520,6 +4545,7 @@ function LeaPlusLC:FriendCheck(name) end + -- This function is called when the mouse leaves the minimap area. local function Minimap_OnLeave() HideMinimapButtons()