Commit e1a2710e authored by Simpy's avatar Simpy 🐹

12.05

parents 649226e3 637c8bfe
<Ui xmlns='http://www.blizzard.com/wow/ui/'>
<Script file='Patch.lua'/>
<Script file='Core.lua'/>
<Script file='Math.lua'/>
<Script file='API.lua'/>
......
local issecurevariable = issecurevariable
local hooksecurefunc = hooksecurefunc
local _G = _G
do --taint workarounds by townlong-yak.com (rearranged by Simpy)
--CommunitiesUI - https://www.townlong-yak.com/bugs/Kjq4hm-DisplayModeTaint
if (_G.UIDROPDOWNMENU_OPEN_PATCH_VERSION or 0) < 1 then _G.UIDROPDOWNMENU_OPEN_PATCH_VERSION = 1 end
--CommunitiesUI #2 - https://www.townlong-yak.com/bugs/YhgQma-SetValueRefreshTaint
if (_G.COMMUNITY_UIDD_REFRESH_PATCH_VERSION or 0) < 1 then _G.COMMUNITY_UIDD_REFRESH_PATCH_VERSION = 1 end
--InterfaceOptions - https://www.townlong-yak.com/bugs/gXwH4P-IOFrameSelection
if (_G.IOFRAME_SELECTION_PATCH_VERSION or 0) < 1 then _G.IOFRAME_SELECTION_PATCH_VERSION = 1 end
-- *NOTE* Simpy: these two were updated to fix an issue which was caused on the dropdowns with submenus
--HonorFrameLoadTaint - https://www.townlong-yak.com/bugs/afKy4k-HonorFrameLoadTaint
if (_G.ELVUI_UIDROPDOWNMENU_VALUE_PATCH_VERSION or 0) < 1 then _G.ELVUI_UIDROPDOWNMENU_VALUE_PATCH_VERSION = 1 end
--RefreshOverread - https://www.townlong-yak.com/bugs/Mx7CWN-RefreshOverread
if (_G.ELVUI_UIDD_REFRESH_OVERREAD_PATCH_VERSION or 0) < 1 then _G.ELVUI_UIDD_REFRESH_OVERREAD_PATCH_VERSION = 1 end
if _G.ELVUI_UIDROPDOWNMENU_VALUE_PATCH_VERSION == 1 or _G.UIDROPDOWNMENU_OPEN_PATCH_VERSION == 1 or _G.ELVUI_UIDD_REFRESH_OVERREAD_PATCH_VERSION == 1 then
local function drop(t, k)
local c = 42
t[k] = nil
while not issecurevariable(t, k) do
if t[c] == nil then
t[c] = nil
end
c = c + 1
end
end
hooksecurefunc('UIDropDownMenu_InitializeHelper', function(frame)
if _G.ELVUI_UIDROPDOWNMENU_VALUE_PATCH_VERSION == 1 or _G.ELVUI_UIDD_REFRESH_OVERREAD_PATCH_VERSION == 1 then
for i=1, _G.UIDROPDOWNMENU_MAXLEVELS do
local d = _G['DropDownList' .. i]
if d and d.numButtons then
for j = d.numButtons+1, _G.UIDROPDOWNMENU_MAXBUTTONS do
local b, _ = _G['DropDownList' .. i .. 'Button' .. j]
if _G.ELVUI_UIDROPDOWNMENU_VALUE_PATCH_VERSION == 1 and not (issecurevariable(b, 'value') or b:IsShown()) then
b.value = nil
repeat j, b['fx' .. j] = j+1, nil
until issecurevariable(b, 'value')
end
if _G.ELVUI_UIDD_REFRESH_OVERREAD_PATCH_VERSION == 1 then
_ = issecurevariable(b, 'checked') or drop(b, 'checked')
_ = issecurevariable(b, 'notCheckable') or drop(b, 'notCheckable')
end
end
end
end
end
if _G.UIDROPDOWNMENU_OPEN_PATCH_VERSION == 1 then
if _G.UIDROPDOWNMENU_OPEN_MENU and _G.UIDROPDOWNMENU_OPEN_MENU ~= frame and not issecurevariable(_G.UIDROPDOWNMENU_OPEN_MENU, 'displayMode') then
_G.UIDROPDOWNMENU_OPEN_MENU = nil
local prefix, i = ' \0', 1
repeat i, _G[prefix .. i] = i + 1, nil
until issecurevariable(_G.UIDROPDOWNMENU_OPEN_MENU)
end
end
end)
end
if _G.COMMUNITY_UIDD_REFRESH_PATCH_VERSION == 1 then
local function CleanDropdowns()
if _G.COMMUNITY_UIDD_REFRESH_PATCH_VERSION == 1 then
local f, f2 = _G.FriendsFrame, _G.FriendsTabHeader
local s = f:IsShown()
f:Hide()
f:Show()
if not f2:IsShown() then
f2:Show()
f2:Hide()
end
if not s then
f:Hide()
end
end
end
hooksecurefunc('Communities_LoadUI', CleanDropdowns)
hooksecurefunc('SetCVar', function(n)
if n == 'lastSelectedClubId' then
CleanDropdowns()
end
end)
end
if _G.IOFRAME_SELECTION_PATCH_VERSION == 1 then
_G.InterfaceOptionsFrame:HookScript('OnHide', function()
if _G.IOFRAME_SELECTION_PATCH_VERSION == 1 then
_G.InterfaceOptionsFrameCategories.selection = nil
end
end)
end
end
## Interface: 90001
## Author: Elv, Simpy
## Version: 12.04
## Version: 12.05
## Title: |cff1784d1ElvUI|r
## Notes: User Interface replacement AddOn for World of Warcraft.
## SavedVariables: ElvDB, ElvPrivateDB
......@@ -10,6 +10,7 @@
## X-Tukui-ProjectID: -2
## X-Tukui-ProjectFolders: ElvUI_OptionsUI, ElvUI
TaintLess.xml
Developer\Load_Developer.xml
Libraries\Load_Libraries.xml
init.lua
......
......@@ -895,6 +895,10 @@ function AB:DisableBlizzard()
-- MainMenuBar:ClearAllPoints taint during combat
_G.MainMenuBar.SetPositionForStatusBars = E.noop
-- Spellbook open in combat taint, only happens sometimes
_G.MultiActionBar_HideAllGrids = E.noop
_G.MultiActionBar_ShowAllGrids = E.noop
-- shut down some events for things we dont use
AB:SetNoopsi(_G.MainMenuBarArtFrame)
AB:SetNoopsi(_G.MainMenuBarArtFrameBackground)
......
......@@ -38,6 +38,7 @@ function B:Initialize()
B:EnhanceColorPicker()
B:KillBlizzard()
B:DisableHelpTip()
B:DisableNPE()
B:AlertMovers()
B:PositionCaptureBar()
B:PositionDurabilityFrame()
......
......@@ -5,6 +5,11 @@ local _G = _G
local hooksecurefunc = hooksecurefunc
local InCombatLockdown = InCombatLockdown
function B:KillBlizzard()
_G.Display_UIScaleSlider:Kill()
_G.Display_UseUIScale:Kill()
end
local function AcknowledgeTips()
if InCombatLockdown() then return end -- just incase cause this code path will call SetCVar
......@@ -13,15 +18,31 @@ local function AcknowledgeTips()
end
end
function B:DisableHelpTip()
function B:DisableHelpTip() -- auto complete helptips
if not E.global.general.disableTutorialButtons then return end
AcknowledgeTips()
hooksecurefunc(_G.HelpTip, 'Show', AcknowledgeTips)
E:Delay(1, AcknowledgeTips)
end
function B:KillBlizzard()
_G.Display_UIScaleSlider:Kill()
_G.Display_UseUIScale:Kill()
-- NOTE: ActionBars heavily conflicts with NPE
local function ShutdownNPE(event)
local NPE = _G.NewPlayerExperience
if NPE then
if NPE:GetIsActive() then
NPE:Shutdown()
end
if event then
B:UnregisterEvent(event)
end
end
end
function B:DisableNPE() -- disable new player experience
if _G.NewPlayerExperience then
ShutdownNPE()
else
B:RegisterEvent('ADDON_LOADED', ShutdownNPE)
end
end
......@@ -4,7 +4,6 @@ local B = E:GetModule('Blizzard')
local _G = _G
local ipairs, tremove = ipairs, tremove
local IsAddOnLoaded = IsAddOnLoaded
local CreateFrame = CreateFrame
function B:ScaleTalkingHeadFrame()
local scale = E.db.general.talkingHeadFrameScale or 1
......@@ -47,18 +46,20 @@ local function InitializeTalkingHead()
end
end
local function LoadTalkingHead(event)
B:UnregisterEvent(event)
_G.TalkingHead_LoadUI()
InitializeTalkingHead()
B:ScaleTalkingHeadFrame()
end
function B:PositionTalkingHead()
if IsAddOnLoaded('Blizzard_TalkingHeadUI') then
InitializeTalkingHead()
B:ScaleTalkingHeadFrame()
else --We want the mover to be available immediately, so we load it ourselves
local f = CreateFrame('Frame')
f:RegisterEvent('PLAYER_ENTERING_WORLD')
f:SetScript('OnEvent', function(frame, event)
frame:UnregisterEvent(event)
_G.TalkingHead_LoadUI()
InitializeTalkingHead()
B:ScaleTalkingHeadFrame()
end)
B:RegisterEvent('PLAYER_ENTERING_WORLD', LoadTalkingHead)
end
end
......@@ -41,6 +41,6 @@ function B:START_TIMER()
end
function B:SkinBlizzTimers()
self:RegisterEvent('START_TIMER')
self:START_TIMER()
B:RegisterEvent('START_TIMER')
B:START_TIMER()
end
......@@ -119,7 +119,9 @@ local function SkinMissionFrame(frame, strip)
if tab then S:HandleTab(tab) end
end
if frame.MapTab then frame.MapTab.ScrollContainer.Child.TiledBackground:Hide() end
if frame.MapTab then
frame.MapTab.ScrollContainer.Child.TiledBackground:Hide()
end
ReskinMissionComplete(frame)
......@@ -478,13 +480,10 @@ function S:Blizzard_GarrisonUI()
end
for _, Button in pairs(OrderHallMissionFrame.MissionTab.MissionList.listScroll.buttons) do
if not Button.isSkinned then
Button:StripTextures()
Button:CreateBackdrop()
S:HandleButton(Button)
Button.backdrop:SetBackdropBorderColor(0, 0, 0, 0)
Button.LocBG:Hide()
Button.isSkinned = true
if not Button.backdrop then -- added in S:HandleButton
S:HandleButton(Button, true)
Button.backdrop:SetFrameLevel(Button:GetFrameLevel())
Button.LocBG:SetDrawLayer('BACKGROUND', 1)
end
end
......@@ -519,6 +518,7 @@ function S:Blizzard_GarrisonUI()
MissionList.CompleteDialog:StripTextures()
MissionList.CompleteDialog:CreateBackdrop('Transparent')
S:HandleButton(MissionList.CompleteDialog.BorderFrame.ViewButton)
MissionList.CompleteDialog.BorderFrame.ViewButton.backdrop:SetFrameLevel(MissionList.CompleteDialog.BorderFrame.ViewButton:GetFrameLevel())
MissionList:StripTextures()
MissionList.listScroll:StripTextures()
S:HandleButton(_G.OrderHallMissionFrameMissions.CombatAllyUI.InProgress.Unassign)
......
......@@ -39,14 +39,13 @@ function S:Blizzard_OrderHallUI()
if bu and bu.talent then
bu.Border:SetAlpha(0)
bu.Icon:SetTexCoord(unpack(E.TexCoords))
bu.Highlight:SetColorTexture(1, 1, 1, .25)
if not bu.backdrop then
bu:CreateBackdrop()
bu.backdrop:SetOutside(bu.Icon)
end
bu.Highlight:SetColorTexture(1, 1, 1, .25)
if bu.talent.selected then
bu.backdrop:SetBackdropBorderColor(1, 1, 0)
else
......
......@@ -886,6 +886,7 @@ end
function S:HandleFollowerListOnUpdateDataFunc(Buttons, numButtons, offset, numFollowers)
if not Buttons or (not numButtons or numButtons == 0) or not offset or not numFollowers then return end
for i = 1, numButtons do
local button = Buttons[i]
local index = offset + i -- adjust index
......@@ -893,7 +894,11 @@ function S:HandleFollowerListOnUpdateDataFunc(Buttons, numButtons, offset, numFo
if button then
local fl = button.Follower
if (index <= numFollowers) and not button.backdrop then
button:CreateBackdrop()
if button.mode == 'CATEGORY' then
button:CreateBackdrop('Transparent')
else
button:CreateBackdrop('NoBackdrop')
end
if button.Category then
button.Category:ClearAllPoints()
......@@ -909,16 +914,17 @@ function S:HandleFollowerListOnUpdateDataFunc(Buttons, numButtons, offset, numFo
fl.BusyFrame:SetAllPoints()
local hl = fl:GetHighlightTexture()
hl:SetColorTexture(0.9, 0.8, 0.1, 0.3)
hl:ClearAllPoints()
hl:Point('TOPLEFT', 1, -1)
hl:Point('BOTTOMRIGHT', -1, 1)
hl:SetColorTexture(0.9, 0.9, 0.9, 0.25)
hl:SetAllPoints()
if fl.Counters then
for y = 1, #fl.Counters do
local counter = fl.Counters[y]
if counter and not counter.backdrop then
counter:CreateBackdrop()
counter.backdrop:SetAllPoints()
counter.backdrop:SetFrameLevel(counter:GetFrameLevel())
if counter.Border then
counter.Border:SetTexture()
end
......@@ -939,20 +945,18 @@ function S:HandleFollowerListOnUpdateDataFunc(Buttons, numButtons, offset, numFo
end
end
if fl then
if fl.Selection and fl.backdrop then
if fl.Selection:IsShown() then
fl.backdrop:SetBackdropColor(0.9, 0.8, 0.1, 0.3)
else
fl.backdrop:SetBackdropColor(0, 0, 0, .25)
end
if fl and fl.Selection and fl.backdrop then
if fl.Selection:IsShown() then
fl.backdrop:SetBackdropColor(0.9, 0.8, 0.1, 0.25)
else
fl.backdrop:SetBackdropColor(0, 0, 0, 0.5)
end
end
if fl.PortraitFrame and fl.PortraitFrame.quality then
local color = ITEM_QUALITY_COLORS[fl.PortraitFrame.quality]
if color and fl.PortraitFrame.backdrop then
fl.PortraitFrame.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
end
if fl and fl.PortraitFrame and fl.PortraitFrame.quality then
local color = ITEM_QUALITY_COLORS[fl.PortraitFrame.quality]
if color and fl.PortraitFrame.backdrop then
fl.PortraitFrame.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
end
end
end
......@@ -965,27 +969,15 @@ function S:HandleFollowerListOnUpdateData(frame)
return -- Only hook this frame if both Garrison and Orderhall skins are enabled because it's shared.
end
if S.FollowerListUpdateDataFrames[frame] ~= nil then return end -- make sure we don't double hook `GarrisonLandingPageFollowerList`
S.FollowerListUpdateDataFrames[frame] = 0 -- use this variable to reduce calls to HandleFollowerListOnUpdateDataFunc
if S.FollowerListUpdateDataFrames[frame] then return end -- make sure we don't double hook `GarrisonLandingPageFollowerList`
S.FollowerListUpdateDataFrames[frame] = true
local FollowerListUpdateDataLastOffset = nil
hooksecurefunc(_G[frame], 'UpdateData', function(dataFrame)
if not S.FollowerListUpdateDataFrames[frame] or (not dataFrame or not dataFrame.listScroll) then return end
local buttons, list = dataFrame.listScroll.buttons, dataFrame.followersList
local offset = _G.HybridScrollFrame_GetOffset(dataFrame.listScroll)
local Buttons = dataFrame.listScroll.buttons
local followersList = dataFrame.followersList
-- store the offset so we can bypass the updateData delay
if FollowerListUpdateDataLastOffset ~= offset then
FollowerListUpdateDataLastOffset = offset
else -- this will delay the function call until every other call
S.FollowerListUpdateDataFrames[frame] = S.FollowerListUpdateDataFrames[frame] + 1
-- this is mainly to prevent two calls when you add or remove a follower to a mission
if S.FollowerListUpdateDataFrames[frame] < 2 then return end
end
S.FollowerListUpdateDataFrames[frame] = 0 -- back to zero because we call it
S:HandleFollowerListOnUpdateDataFunc(Buttons, Buttons and #Buttons, offset, followersList and #followersList)
S:HandleFollowerListOnUpdateDataFunc(buttons, buttons and #buttons, offset, list and #list)
end)
end
......
......@@ -307,6 +307,7 @@ function UF:Construct_ClassBar(frame)
bars[i].bg:SetTexture(E.media.blankTex)
end
bars.PostVisibility = UF.PostVisibilityClassBar
bars.PostUpdate = UF.UpdateClassBar
bars.UpdateColor = E.noop --We handle colors on our own in Configure_ClassBar
bars.UpdateTexture = E.noop --We don't use textures but statusbars, so prevent errors
......@@ -317,10 +318,20 @@ function UF:Construct_ClassBar(frame)
return bars
end
function UF:PostVisibilityClassBar()
local frame = self.origParent or self:GetParent()
ToggleResourceBar(frame[frame.ClassBar])
UF:Configure_ClassBar(frame)
UF:Configure_HealthBar(frame)
UF:Configure_Power(frame)
UF:Configure_InfoPanel(frame)
end
function UF:UpdateClassBar(current, maxBars, hasMaxChanged)
local frame = self.origParent or self:GetParent()
local db = frame.db
if not db then return; end
if not db then return end
local isShown = self:IsShown()
local stateChanged
......@@ -411,27 +422,6 @@ function UF:Construct_DeathKnightResourceBar(frame)
return runes
end
-- Keep it for now. Maybe obsolete!
--[[
function UF:PostVisibilityRunes(enabled)
local frame = self.origParent or self:GetParent()
if enabled then
frame.ClassBar = 'Runes'
frame.MAX_CLASS_BAR = #self
else
frame.ClassBar = 'ClassPower'
frame.MAX_CLASS_BAR = MAX_COMBO_POINTS
end
local custom_backdrop = UF.db.colors.customclasspowerbackdrop and UF.db.colors.classpower_backdrop
if custom_backdrop then
for i=1, #self do
self[i].bg:SetVertexColor(custom_backdrop.r, custom_backdrop.g, custom_backdrop.b)
end
end
end]]
-------------------------------------------------------------
-- ALTERNATIVE MANA BAR
-------------------------------------------------------------
......
<Ui><Script><![CDATA[--[[
TaintLess [20-10-19]
https://www.townlong-yak.com/addons/taintless
All rights reserved.
Permission is hereby granted to distribute unmodified copies of this file.
]]
local function purgeKey(t, k)
t[k] = nil
local c = 42
repeat
if t[c] == nil then
t[c] = nil
end
c = c + 1
until issecurevariable(t, k)
end
-- https://www.townlong-yak.com/bugs/Mx7CWN-RefreshOverread
if (tonumber(UIDD_REFRESH_OVERREAD_PATCH_VERSION) or 0) < 3 then
UIDD_REFRESH_OVERREAD_PATCH_VERSION = 3
hooksecurefunc("UIDropDownMenu_InitializeHelper", function()
if UIDD_REFRESH_OVERREAD_PATCH_VERSION ~= 3 then
return
end
for i=1, UIDROPDOWNMENU_MAXLEVELS do
for j=1+_G["DropDownList" .. i].numButtons, UIDROPDOWNMENU_MAXBUTTONS do
local b, _ = _G["DropDownList" .. i .. "Button" .. j]
_ = issecurevariable(b, "checked") or purgeKey(b, "checked")
_ = issecurevariable(b, "notCheckable") or purgeKey(b, "notCheckable")
end
end
end)
end
-- https://www.townlong-yak.com/bugs/Kjq4hm-DisplayModeTaint
if (tonumber(UIDROPDOWNMENU_OPEN_PATCH_VERSION) or 0) < 1 then
UIDROPDOWNMENU_OPEN_PATCH_VERSION = 1
hooksecurefunc("UIDropDownMenu_InitializeHelper", function(frame)
if UIDROPDOWNMENU_OPEN_PATCH_VERSION ~= 1 then
return
end
if UIDROPDOWNMENU_OPEN_MENU and UIDROPDOWNMENU_OPEN_MENU ~= frame
and not issecurevariable(UIDROPDOWNMENU_OPEN_MENU, "displayMode") then
purgeKey(_G, "UIDROPDOWNMENU_OPEN_MENU")
end
end)
end
-- https://www.townlong-yak.com/bugs/gXwH4P-IOFrameSelection
if (tonumber(IOFRAME_SELECTION_PATCH_VERSION) or 0) < 1 then
IOFRAME_SELECTION_PATCH_VERSION = 1
InterfaceOptionsFrame:HookScript("OnHide", function()
if IOFRAME_SELECTION_PATCH_VERSION == 1 then
InterfaceOptionsFrameCategories.selection = nil
end
end)
end
]]></Script></Ui>
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment