Commit 0a6ce3f5 authored by NihilisticPandemonium's avatar NihilisticPandemonium

Merge development.

parents d3d58d29 635664bd
This diff is collapsed.
......@@ -207,6 +207,20 @@ E.PriestColors = {
colorStr = 'fcfcfc'
}
-- Socket Type info from 8.2
E.GemTypeInfo = {
Yellow = {r = 0.97, g = 0.82, b = 0.29},
Red = {r = 1, g = 0.47, b = 0.47},
Blue = {r = 0.47, g = 0.67, b = 1},
Hydraulic = {r = 1, g = 1, b = 1},
Cogwheel = {r = 1, g = 1, b = 1},
Meta = {r = 1, g = 1, b = 1},
Prismatic = {r = 1, g = 1, b = 1},
PunchcardRed = {r = 1, g = 0.47, b = 0.47},
PunchcardYellow = {r = 0.97, g = 0.82, b = 0.29},
PunchcardBlue = {r = 0.47, g = 0.67, b = 1},
}
function E:GetPlayerRole()
local assignedRole = UnitGroupRolesAssigned('player')
if assignedRole == 'NONE' then
......
......@@ -12,7 +12,7 @@ local tinsert = tinsert
--WoW API / Variables
local CreateFrame = CreateFrame
local SetCVar = SetCVar
local PlaySoundFile = PlaySoundFile
local PlaySound = PlaySound
local ReloadUI = ReloadUI
local UIFrameFadeOut = UIFrameFadeOut
local ChatFrame_AddMessageGroup = ChatFrame_AddMessageGroup
......@@ -723,7 +723,7 @@ function E:Install()
imsg:Hide()
imsg:SetScript('OnShow', function(f)
if f.message then
PlaySoundFile([[Sound\Interface\LevelUp.wav]])
PlaySound(888)
f.text:SetText(f.message)
UIFrameFadeOut(f, 3.5, 1, 0)
E:Delay(4, f.Hide, f)
......
......@@ -59,7 +59,7 @@ local tinsert, tremove = tinsert, tremove
local format = string.format
--WoW API / Variables
local CreateFrame = CreateFrame
local PlaySoundFile = PlaySoundFile
local PlaySound = PlaySound
local UIFrameFadeOut = UIFrameFadeOut
local CreateAnimationGroup = CreateAnimationGroup
local CONTINUE, PREVIOUS, UNKNOWN = CONTINUE, PREVIOUS, UNKNOWN
......@@ -156,7 +156,7 @@ function PI:CreateStepComplete()
imsg:Hide()
imsg:SetScript('OnShow', function(frame)
if frame.message then
PlaySoundFile([[Sound\Interface\LevelUp.wav]])
PlaySound(888) -- LevelUp Sound
frame.text:SetText(frame.message)
UIFrameFadeOut(frame, 3.5, 1, 0)
E:Delay(4, frame.Hide, frame)
......
......@@ -337,6 +337,9 @@ local StripTexturesBlizzFrames = {
'LeftInset',
'RightInset',
'NineSlice',
'BG',
'border',
'Border',
'BorderFrame',
'bottomInset',
'BottomInset',
......
## Interface: 80100
## Interface: 80200
## Author: Elv
## Version: 11.12
## Version: 11.13
## Title: |cfffe7b2cElvUI|r
## Notes: User Interface replacement AddOn for World of Warcraft.
## SavedVariables: ElvDB, ElvPrivateDB
......
......@@ -267,10 +267,6 @@ end
-- AceDBOptions-3.0 support
-- ----------------------------------------------------------------------------
local function NoDualSpec()
return UnitLevel("player") < 11
end
options.new = {
name = "New",
type = "input",
......@@ -308,7 +304,6 @@ options.enabled = {
width = "full",
get = function(info) return info.handler.db:IsDualSpecEnabled() end,
set = function(info, value) info.handler.db:SetDualSpecEnabled(value) end,
hidden = NoDualSpec,
}
for i = 1, numSpecs do
......@@ -322,7 +317,6 @@ for i = 1, numSpecs do
values = "ListProfiles",
arg = "common",
disabled = function(info) return not info.handler.db:IsDualSpecEnabled() end,
hidden = NoDualSpec,
}
end
......
--[[
Name: LibSharedMedia-3.0
Revision: $Revision: 91 $
Revision: $Revision: 107 $
Author: Elkano (elkano@gmx.de)
Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com)
Website: http://www.wowace.com/projects/libsharedmedia-3-0/
......@@ -9,7 +9,7 @@ Dependencies: LibStub, CallbackHandler-1.0
License: LGPL v2.1
]]
local MAJOR, MINOR = "LibSharedMedia-3.0", 6010002 -- 6.1.0 v2 / increase manually on changes
local MAJOR, MINOR = "LibSharedMedia-3.0", 6010003 -- Increase manually on changes
local lib = LibStub:NewLibrary(MAJOR, MINOR)
if not lib then return end
......@@ -20,8 +20,6 @@ local pairs = _G.pairs
local type = _G.type
local band = _G.bit.band
local table_insert = _G.table.insert
local table_sort = _G.table.sort
local locale = GetLocale()
......@@ -197,7 +195,7 @@ lib.DefaultMedia.statusbar = "Blizzard"
-- SOUND
if not lib.MediaTable.sound then lib.MediaTable.sound = {} end
lib.MediaTable.sound["None"] = [[Interface\Quiet.ogg]] -- Relies on the fact that PlaySound[File] doesn't error on non-existing input.
lib.MediaTable.sound["None"] = C_RaidLocks and 1 or [[Interface\Quiet.ogg]] -- Relies on the fact that PlaySound[File] doesn't error on non-existing input.
lib.DefaultMedia.sound = "None"
local function rebuildMediaList(mediatype)
......@@ -233,7 +231,7 @@ function lib:Register(mediatype, key, data, langmask)
if not mediaTable[mediatype] then mediaTable[mediatype] = {} end
local mtable = mediaTable[mediatype]
if mtable[key] then return false end
mtable[key] = data
rebuildMediaList(mediatype)
self.callbacks:Fire("LibSharedMedia_Registered", mediatype, key)
......
......@@ -14,7 +14,11 @@ local hiddenParent = CreateFrame('Frame', nil, UIParent)
hiddenParent:SetAllPoints()
hiddenParent:Hide()
local function handleFrame(baseName)
local function insecureOnShow(self)
self:Hide()
end
local function handleFrame(baseName, doNotReparent)
local frame
if(type(baseName) == 'string') then
frame = _G[baseName]
......@@ -26,8 +30,9 @@ local function handleFrame(baseName)
frame:UnregisterAllEvents()
frame:Hide()
-- Keep frame hidden without causing taint
frame:SetParent(hiddenParent)
if(not doNotReparent) then
frame:SetParent(hiddenParent)
end
local health = frame.healthBar or frame.healthbar
if(health) then
......@@ -116,7 +121,9 @@ function oUF:DisableBlizzard(unit)
elseif(unit:match('nameplate%d+$')) then
local frame = C_NamePlate.GetNamePlateForUnit(unit)
if(frame and frame.UnitFrame) then
handleFrame(frame.UnitFrame)
frame.UnitFrame:HookScript('OnShow', insecureOnShow)
handleFrame(frame.UnitFrame, true)
end
end
end
......@@ -71,7 +71,6 @@ local function Update(self, event, unit)
if(event == 'UNIT_SPELLCAST_START' and startTime ~= endTime) then
local costTable = GetSpellPowerCost(spellID)
for _, costInfo in next, costTable do
-- costInfo content:
-- - name: string (powerToken)
......
......@@ -445,39 +445,56 @@ local tags = setmetatable(
},
{
__index = function(self, key)
local tagFunc = tagStrings[key]
if(tagFunc) then
local func, err = loadstring('return ' .. tagFunc)
if(func) then
func = func()
-- Want to trigger __newindex, so no rawset.
self[key] = func
tagStrings[key] = nil
return func
else
error(err, 3)
end
local tagString = tagStrings[key]
if(tagString) then
self[key] = tagString
tagStrings[key] = nil
end
return rawget(self, key)
end,
__newindex = function(self, key, val)
if(type(val) == 'string') then
tagStrings[key] = val
elseif(type(val) == 'function') then
-- So we don't clash with any custom envs.
if(getfenv(val) == _G) then
setfenv(val, _PROXY)
local func, err = loadstring('return ' .. val)
if(func) then
val = func()
else
error(err, 3)
end
end
assert(type(val) == 'function', 'Tag function must be a function or a string that evaluates to a function.')
rawset(self, key, val)
-- We don't want to clash with any custom envs
if(getfenv(val) == _G) then
-- pcall is needed for cases when Blizz functions are passed as
-- strings, for intance, 'UnitPowerMax', an attempt to set a
-- custom env will result in an error
pcall(setfenv, val, _PROXY)
end
rawset(self, key, val)
end,
}
)
_ENV._TAGS = tags
local vars = setmetatable({}, {
__newindex = function(self, key, val)
if(type(val) == 'string') then
local func = loadstring('return ' .. val)
if(func) then
val = func() or val
end
end
rawset(self, key, val)
end,
})
_ENV._VARS = vars
local tagEvents = {
['affix'] = 'UNIT_CLASSIFICATION_CHANGED',
['arcanecharges'] = 'UNIT_POWER_UPDATE PLAYER_TALENT_UPDATE',
......@@ -532,8 +549,8 @@ local unitlessEvents = {
}
local events = {}
local frame = CreateFrame('Frame')
frame:SetScript('OnEvent', function(self, event, unit)
local eventFrame = CreateFrame('Frame')
eventFrame:SetScript('OnEvent', function(self, event, unit)
local strings = events[event]
if(strings) then
for _, fs in next, strings do
......@@ -548,9 +565,7 @@ local onUpdates = {}
local eventlessUnits = {}
local function createOnUpdate(timer)
local OnUpdate = onUpdates[timer]
if(not OnUpdate) then
if(not onUpdates[timer]) then
local total = timer
local frame = CreateFrame('Frame')
local strings = eventlessUnits[timer]
......@@ -580,12 +595,16 @@ Used to update all tags on a frame.
--]]
local function Update(self)
if(self.__tags) then
for _, fs in next, self.__tags do
for fs in next, self.__tags do
fs:UpdateTag()
end
end
end
local tagPool = {}
local funcPool = {}
local tmp = {}
local function getTagName(tag)
local tagStart = (tag:match('>+()') or 2)
local tagEnd = tag:match('.*()<+')
......@@ -594,71 +613,7 @@ local function getTagName(tag)
return tag:sub(tagStart, tagEnd), tagStart, tagEnd
end
local function registerEvent(fontstr, event)
if(not events[event]) then events[event] = {} end
frame:RegisterEvent(event)
table.insert(events[event], fontstr)
end
local function registerEvents(fontstr, tagstr)
for tag in tagstr:gmatch(_PATTERN) do
tag = getTagName(tag)
local tagevents = tagEvents[tag]
if(tagevents) then
for event in tagevents:gmatch('%S+') do
registerEvent(fontstr, event)
end
end
end
end
local function unregisterEvents(fontstr)
for event, data in next, events do
for i, tagfsstr in next, data do
if(tagfsstr == fontstr) then
if(#data == 1) then
frame:UnregisterEvent(event)
end
table.remove(data, i)
end
end
end
end
local tagPool = {}
local funcPool = {}
local tmp = {}
--[[ Tags: frame:Tag(fs, tagstr, ...)
Used to register a tag on a unit frame.
* self - the unit frame on which to register the tag
* fs - the font string to display the tag (FontString)
* tagstr - the tag string (string)
* ... - additional optional unitID(s) the tag should update for
--]]
local function Tag(self, fs, tagstr, ...)
if(not fs or not tagstr) then return end
if(not self.__tags) then
self.__tags = {}
table.insert(self.__elements, Update)
else
-- Since people ignore everything that's good practice - unregister the tag
-- if it already exists.
for _, tag in pairs(self.__tags) do
if(fs == tag) then
-- We don't need to remove it from the __tags table as Untag handles
-- that for us.
self:Untag(fs)
end
end
end
fs.parent = self
local function getTagFunc(tagstr)
local func = tagPool[tagstr]
if(not func) then
local format, numTags = tagstr:gsub('%%', '%%%%'):gsub(_PATTERN, '%%s')
......@@ -787,9 +742,68 @@ local function Tag(self, fs, tagstr, ...)
tagPool[tagstr] = func
end
fs.UpdateTag = func
local unit = self.unit
return func
end
local function registerEvent(fontstr, event)
if(not events[event]) then events[event] = {} end
eventFrame:RegisterEvent(event)
table.insert(events[event], fontstr)
end
local function registerEvents(fontstr, tagstr)
for tag in tagstr:gmatch(_PATTERN) do
tag = getTagName(tag)
local tagevents = tagEvents[tag]
if(tagevents) then
for event in tagevents:gmatch('%S+') do
registerEvent(fontstr, event)
end
end
end
end
local function unregisterEvents(fontstr)
for event, data in next, events do
for i, tagfsstr in next, data do
if(tagfsstr == fontstr) then
if(#data == 1) then
eventFrame:UnregisterEvent(event)
end
table.remove(data, i)
end
end
end
end
local taggedFS = {}
--[[ Tags: frame:Tag(fs, tagstr, ...)
Used to register a tag on a unit frame.
* self - the unit frame on which to register the tag
* fs - the font string to display the tag (FontString)
* tagstr - the tag string (string)
* ... - additional optional unitID(s) the tag should update for
--]]
local function Tag(self, fs, tagstr, ...)
if(not fs or not tagstr) then return end
if(not self.__tags) then
self.__tags = {}
table.insert(self.__elements, Update)
elseif(self.__tags[fs]) then
-- We don't need to remove it from the __tags table as Untag handles
-- that for us.
self:Untag(fs)
end
fs.parent = self
fs.UpdateTag = getTagFunc(tagstr)
if(self.__eventless or fs.frequentUpdates) then
local timer
if(type(fs.frequentUpdates) == 'number') then
......@@ -811,13 +825,13 @@ local function Tag(self, fs, tagstr, ...)
end
for index = 1, select('#', ...) do
local unit = select(index, ...)
fs.extraUnits[unit] = true
fs.extraUnits[select(index, ...)] = true
end
end
end
table.insert(self.__tags, fs)
taggedFS[fs] = tagstr
self.__tags[fs] = true
end
--[[ Tags: frame:Untag(fs)
......@@ -838,19 +852,54 @@ local function Untag(self, fs)
end
end
for i, fontstr in next, self.__tags do
if(fontstr == fs) then
table.remove(self.__tags, i)
end
end
fs.UpdateTag = nil
taggedFS[fs] = nil
self.__tags[fs] = nil
end
oUF.Tags = {
Methods = tags,
Events = tagEvents,
SharedEvents = unitlessEvents,
Vars = vars,
RefreshMethods = function(self, tag)
if(not tag) then return end
funcPool['[' .. tag .. ']'] = nil
tag = '%[' .. tag .. '%]'
for tagstr, func in next, tagPool do
if(tagstr:match(tag)) then
tagPool[tagstr] = nil
for fs in next, taggedFS do
if(fs.UpdateTag == func) then
fs.UpdateTag = getTagFunc(tagstr)
if(fs:IsVisible()) then
fs:UpdateTag()
end
end
end
end
end
end,
RefreshEvents = function(self, tag)
if(not tag) then return end
tag = '%[' .. tag .. '%]'
for tagstr in next, tagPool do
if(tagstr:match(tag)) then
for fs, ts in next, taggedFS do
if(ts == tagstr) then
unregisterEvents(fs)
registerEvents(fs, tagstr)
end
end
end
end
end,
}
oUF:RegisterMetaFunction('Tag', Tag)
......
This diff is collapsed.
......@@ -15,11 +15,11 @@ L["ABOVE_THREAT_FORMAT"] = "%s: %.0f%% [на %.0f%% опережаем |cff%02x%
L["Accepting this will reset the UnitFrame settings for %s. Are you sure?"] = "Приняв это вы сбросите настройки для %s. Вы уверены?"
L["Accepting this will reset your Filter Priority lists for all auras on NamePlates. Are you sure?"] = "Приняв это вы сбросите ваши списки приоритетов для всех аур на индикаторах здоровья. Вы уверены?"
L["Accepting this will reset your Filter Priority lists for all auras on UnitFrames. Are you sure?"] = "Приняв это вы сбросите ваши списки приоритетов для всех аур на рамках юнитов. Вы уверены?"
L["Additive Blend"] = true
L["Additive Blend"] = "Аддитивное сешивание" --Check back later
L["Adjust the UI Scale to fit your screen, press the autoscale button to set the UI Scale automatically."] = "Измените масштаб интерфейса для вашего экрана. Нажмите автомасштаб, чтобы мы установили его сами."
L["AFK"] = "АФК"
L["All keybindings cleared for |cff00ff00%s|r."] = "Сброшены все назначения для |cff00ff00%s|r."
L["Alpha Key"] = true
L["Alpha Key"] = "По прозрачности" --Check back later
L["Already Running.. Bailing Out!"] = "Уже выполняется.. Бобер, выдыхай!"
L["Alternative Power"] = "Альтернативный ресурс"
L["AP"] = "Сила Ат."
......@@ -54,8 +54,8 @@ L["BfA Missions"] = "Миссии BfA"
L["Binding"] = "Назначение"
L["Binds Discarded"] = "Назначения отменены"
L["Binds Saved"] = "Назначения сохранены"
L["Blend Mode"] = true
L["Blend"] = true
L["Blend Mode"] = "Тип смешивания" --Check back later
L["Blend"] = "Смешивание" --Check back later
L["BNet Frame"] = "Оповещения BNet"
L["Boss Button"] = "Кнопка босса"
L["Boss Frames"] = "Боссы"
......@@ -89,13 +89,13 @@ L["Dead"] = "Труп"
L["Deficit:"] = "Убыток:"
L["Delete gray items?"] = "Удалить серый предметы?"
L["Deposit Reagents"] = "Сложить материалы"
L["Desaturate all grey items that can be vendored."] = true
L["Desaturate all grey items that can be vendored."] = "Обесцветить все серые предметы, которые можно продать."
L["Detected that your ElvUI OptionsUI addon is out of date. This may be a result of your Tukui Client being out of date. Please visit our download page and update your Tukui Client, then reinstall ElvUI. Not having your ElvUI OptionsUI addon up to date will result in missing options."] = "Мы обнаружили, что ElvUI OptionsUI устарел. Это может быть результатом устаревшей версии Tukui Client. Пожалуйста, посетите нашу страницу загрузок и обновите Tukui Client, а затем переустановите ElvUI. Устаревший ElvUI OptionsUI может привести к отсутствию некоторых опций."
L["Disable Warning"] = "Отключить предупреждение"
L["Disable"] = "Выключить"
L["Disband Group"] = "Распустить группу"
L["Discard"] = "Отменить"
L["Discord"] = true
L["Discord"] = true --Doesn't need translating
L["DND"] = "ДНД"
L["Do you enjoy the new ElvUI?"] = "Вам нравится ElvUI?"
L["Do you swear not to post in technical support about something not working without first disabling the addon/module combination first?"] = "Клянетесь ли Вы не постить на форуме технической поддержки, что что-то не работает, до того, как отключите другие аддоны/модули?"
......@@ -198,7 +198,7 @@ L["MirrorTimer"] = "Таймер"
L["Mission(s) Report:"] = "Отчет миссий:"
L["Mitigation By Level: "] = "Снижение на уровне: "
L["Mobile"] = "Мобильный"
L["Modulating Blend"] = true
L["Modulating Blend"] = "Модулирующие смешивание" --Check back later
L["Mov. Speed:"] = _G.STAT_MOVEMENT_SPEED
L["MT Frames"] = "Танки"
L["Naval Mission(s) Report:"] = "Отчет морских миссий:"
......@@ -256,8 +256,8 @@ L["Rested:"] = "Бодрость:"
L["Right Chat"] = "Правый чат"
L["Right Click the bag icon to assign a type of item to this bag."] = "ПКМ на иконке сумки для назначении типа предметов этой сумки."
L["RL"] = "РЛ"
L["Role: Tank, Damage, Healer"] = true
L["Role: Tank, Healer, Damage"] = true
L["Role: Tank, Damage, Healer"] = "Роль: Танк, Урон, Лекарь"
L["Role: Tank, Healer, Damage"] = "Роль: Танк, Лекарь, Урон"
L["RW"] = "Объявление"
L["Save"] = "Сохранить"
L["Saved Dungeon(s)"] = "Сохраненнные подземелья"
......@@ -330,8 +330,8 @@ L["Voice Overlay"] = "Индикатор голоса"
L["Waist"] = "Пояс"
L["Welcome to ElvUI version %s!"] = "Добро пожаловать в ElvUI версии %s!"
L["whispers"] = "шепчет"
L["World Latency:"] = true
L["World Protocol:"] = "Мировой протокол:"
L["World Latency:"] = "Глобальная задержка:"
L["World Protocol:"] = "Глобальный протокол:"
L["WoW Token:"] = "WoW токен:"
L["Wrist"] = "Запястья"
L["XP:"] = "Опыт:"
......
......@@ -59,7 +59,6 @@ function B:MoveObjectiveFrame()
B:SetObjectiveFrameHeight()
ObjectiveTrackerFrame:SetClampedToScreen(false)
ObjectiveTrackerFrame:SetMovable(true)
if ObjectiveTrackerFrame:IsMovable() then
......
......@@ -2188,9 +2188,6 @@ function CH:SocialQueueEvent(_, guid, numAddedItems) -- event, guid, numAddedIte
end
end
-- ignore groups created by the addon World Quest Group Finder/World Quest Tracker/World Quest Assistant/HandyNotes_Argus to reduce spam
if comment and (strfind(comment, "World Quest Group Finder") or strfind(comment, "World Quest Tracker") or strfind(comment, "World Quest Assistant") or strfind(comment, "HandyNotes_Argus")) then return end
if activityID or firstQueue.queueData.activityID then
fullName = C_LFGList_GetActivityInfo(activityID or firstQueue.queueData.activityID)
end
......
......@@ -10,6 +10,7 @@ local format = string.format
local C_AzeriteItem_FindActiveAzeriteItem = C_AzeriteItem.FindActiveAzeriteItem
local C_AzeriteItem_GetAzeriteItemXPInfo = C_AzeriteItem.GetAzeriteItemXPInfo
local C_AzeriteItem_GetPowerLevel = C_AzeriteItem.GetPowerLevel
local C_AzeriteItem_IsAzeriteItemAtMaxLevel = C_AzeriteItem.IsAzeriteItemAtMaxLevel
local InCombatLockdown = InCombatLockdown
local CreateFrame = CreateFrame
local ARTIFACT_POWER = ARTIFACT_POWER
......@@ -29,7 +30,7 @@ function mod:UpdateAzerite(event, unit)
local bar = self.azeriteBar
local azeriteItemLocation = C_AzeriteItem_FindActiveAzeriteItem()
if not azeriteItemLocation or (event == "PLAYER_REGEN_DISABLED" and self.db.azerite.hideInCombat) then
if not azeriteItemLocation or (event == "PLAYER_REGEN_DISABLED" and self.db.azerite.hideInCombat) or C_AzeriteItem_IsAzeriteItemAtMaxLevel() then
bar:Hide()
elseif azeriteItemLocation and (not self.db.azerite.hideInCombat or not InCombatLockdown()) then
bar:Show()
......
......@@ -660,6 +660,12 @@ function mod:StyleFilterConditionCheck(frame, filter, trigger)
if frame.isPlayerControlled and not frame.isPlayer then passed = true else return end
end
-- Unit Tap Denied
if trigger.isTapDenied or trigger.isNotTapDenied then
local tapDenied = UnitIsTapDenied(frame.unit)
if (trigger.isTapDenied and tapDenied) or (trigger.isNotTapDenied and not tapDenied) then passed = true else return end
end
-- Player Vehicle
if trigger.inVehicle or trigger.outOfVehicle then
local inVehicle = UnitInVehicle('player')
......@@ -1021,6 +1027,10 @@ function mod:StyleFilterConfigure()
mod.StyleFilterTriggerEvents.UNIT_PET = 1
end
if t.isTapDenied or t.isNotTapDenied then
mod.StyleFilterTriggerEvents.UNIT_FLAGS = true
end
if t.raidTarget then
mod.StyleFilterTriggerEvents.RAID_TARGET_UPDATE = 1
end
......
......@@ -124,6 +124,7 @@ function S:Ace3_RegisterAsWidget(widget)
text:ClearAllPoints()
text:SetJustifyH('RIGHT')
text:Point('RIGHT', button, 'LEFT', -3, 0)
text:Point('LEFT', frame.backdrop, 'LEFT', 2, 0)
button:SetParent(frame.backdrop)
text:SetParent(frame.backdrop)
......@@ -146,6 +147,7 @@ function S:Ace3_RegisterAsWidget(widget)
frame.text:ClearAllPoints()
frame.text:Point('RIGHT', button, 'LEFT', -2, 0)
frame.text:Point('LEFT', frame.backdrop, 'LEFT', 2, 0)
button:ClearAllPoints()
button:Point('TOPLEFT', frame.backdrop, 'TOPRIGHT', -22, -2)
......
......@@ -519,48 +519,37 @@ local function SkinLegendaryItemAlert(frame, itemLink)
end
local function SkinLootWonAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, "SetAlpha", forceAlpha)
frame.hooked = true
end
frame:SetAlpha(1)
frame.Background:Kill()
frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
frame.Icon:SetDrawLayer("BORDER")
frame.IconBorder:Kill()
local lootItem = frame.lootItem or frame
lootItem.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
lootItem.Icon:SetDrawLayer("BORDER")
lootItem.IconBorder:Kill()
lootItem.SpecRing:SetTexture("")