Skip to content

Commit 42dd9b4

Browse files
committed
13.60
2 parents e928e71 + 9de603c commit 42dd9b4

31 files changed

+508
-235
lines changed

.github/workflows/release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
1414
steps:
1515
- name: Clone project
16-
uses: actions/checkout@v3
16+
uses: actions/checkout@v4
1717
- name: Prepare environment
1818
run: |
1919
echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV

CHANGELOG.md

+13
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
### Version 13.60 [ March 19th 2024 ]
2+
* Difficulty Icon on Minimap improved, resolving an issue with the mouseover tooltip.
3+
* Pet Battle XP bar overlapped Pass button.
4+
* Encounter Journal error on open resolved.
5+
* Text To Speech button added to Chat > Voice Chat.
6+
* Reputation Databar being clickable during combat.
7+
* Error when using /tts when Chat Voice buttons were disabled.
8+
* Classic SoD: Mage runes added to improve Range Fader for lower levels (Regeneration and Mass Regeneration).
9+
* Classic: Hunter/Rogue/Warrior Range Fader corrected.
10+
* Classic: Send Mail text color corrected.
11+
* Classic: Bags Quiver border missing on bags at first login.
12+
* Classic: Bags Sorting breaking when Quivers tried to sort into other Quivers.
13+
114
### Version 13.59 [ February 23rd 2024 ]
215
* Gnomeregan filters updated.
316
* Whitelisted Suspended World Buffs.

ElvUI/Classic/Modules/Skins/BlizzardOptions.lua

+70
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,35 @@ local function Skin_InterfaceOptions_Buttons()
3636
end
3737
end
3838

39+
local function ReskinPickerOptions(self)
40+
local scrollTarget = self.ScrollBox.ScrollTarget
41+
if scrollTarget then
42+
for _, child in next, { scrollTarget:GetChildren() } do
43+
if not child.IsSkinned then
44+
child.UnCheck:SetTexture(nil)
45+
child.Highlight:SetColorTexture(1, .82, 0, 0.4)
46+
47+
local check = child.Check
48+
if check then
49+
check:SetColorTexture(1, .82, 0, 0.8)
50+
check:SetSize(10, 10)
51+
check:Point('LEFT', 2, 0)
52+
check:CreateBackdrop('Transparent')
53+
end
54+
55+
child.IsSkinned = true
56+
end
57+
end
58+
end
59+
end
60+
61+
local function HandleVoicePicker(voicePicker)
62+
local customFrame = voicePicker:GetChildren()
63+
customFrame:StripTextures()
64+
customFrame:CreateBackdrop('Transparent')
65+
voicePicker:HookScript('OnShow', ReskinPickerOptions)
66+
end
67+
3968
function S.AudioOptionsVoicePanel_InitializeCommunicationModeUI(btn)
4069
HandlePushToTalkButton(btn.PushToTalkKeybindButton)
4170
end
@@ -94,6 +123,7 @@ function S:BlizzardOptions()
94123
_G.CombatConfigMessageSourcesDoneBy,
95124
_G.CombatConfigColorsUnitColors,
96125
_G.CombatConfigMessageSourcesDoneTo,
126+
_G.ChatConfigTextToSpeechChannelSettingsLeft
97127
}
98128

99129
local ChatButtons = {
@@ -354,6 +384,46 @@ function S:BlizzardOptions()
354384
S:HandleSliderFrame(_G.UnitPopupVoiceSpeakerVolume.Slider)
355385
S:HandleSliderFrame(_G.UnitPopupVoiceMicrophoneVolume.Slider)
356386
S:HandleSliderFrame(_G.UnitPopupVoiceUserVolume.Slider)
387+
388+
-- TextToSpeech
389+
_G.TextToSpeechButton:StripTextures()
390+
391+
S:HandleButton(_G.TextToSpeechFramePlaySampleButton)
392+
S:HandleButton(_G.TextToSpeechFramePlaySampleAlternateButton)
393+
S:HandleButton(_G.TextToSpeechDefaultButton)
394+
S:HandleCheckBox(_G.TextToSpeechCharacterSpecificButton)
395+
396+
S:HandleDropDownBox(_G.TextToSpeechFrameTtsVoiceDropdown)
397+
S:HandleDropDownBox(_G.TextToSpeechFrameTtsVoiceAlternateDropdown)
398+
S:HandleSliderFrame(_G.TextToSpeechFrameAdjustRateSlider)
399+
S:HandleSliderFrame(_G.TextToSpeechFrameAdjustVolumeSlider)
400+
401+
for _, checkbox in pairs({ -- check boxes
402+
'PlayActivitySoundWhenNotFocusedCheckButton',
403+
'PlaySoundSeparatingChatLinesCheckButton',
404+
'AddCharacterNameToSpeechCheckButton',
405+
'NarrateMyMessagesCheckButton',
406+
'UseAlternateVoiceForSystemMessagesCheckButton',
407+
}) do
408+
S:HandleCheckBox(_G.TextToSpeechFramePanelContainer[checkbox])
409+
end
410+
411+
hooksecurefunc('TextToSpeechFrame_UpdateMessageCheckboxes', function(frame)
412+
if not frame.checkBoxTable then return end
413+
414+
local nameString = frame:GetName()..'CheckBox'
415+
for index in ipairs(frame.checkBoxTable) do
416+
local checkBox = _G[nameString..index]
417+
if checkBox and not checkBox.IsSkinned then
418+
S:HandleCheckBox(checkBox)
419+
420+
checkBox.IsSkinned = true
421+
end
422+
end
423+
end)
424+
425+
HandleVoicePicker(_G.TextToSpeechFrameTtsVoicePicker)
426+
HandleVoicePicker(_G.TextToSpeechFrameTtsVoiceAlternatePicker)
357427
end
358428

359429
S:AddCallback('BlizzardOptions')

ElvUI/Classic/Modules/Skins/Friends.lua

+2-5
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,8 @@ function S:FriendsFrame()
221221
button.icon:Point('LEFT', 45, 0)
222222
button.icon:Size(15)
223223
button.icon:SetTexture([[Interface\WorldStateFrame\Icons-Classes]])
224+
button.icon:CreateBackdrop(nil, true, nil, nil, nil, nil, nil, button.icon)
224225

225-
button:CreateBackdrop(nil, true)
226-
button.backdrop:SetAllPoints(button.icon)
227226
S:HandleButtonHighlight(button)
228227

229228
level:ClearAllPoints()
@@ -304,9 +303,7 @@ function S:FriendsFrame()
304303
button.icon:Point('LEFT', 48, 0)
305304
button.icon:Size(15)
306305
button.icon:SetTexture([[Interface\WorldStateFrame\Icons-Classes]])
307-
308-
button:CreateBackdrop(nil, true)
309-
button.backdrop:SetAllPoints(button.icon)
306+
button.icon:CreateBackdrop(nil, true, nil, nil, nil, nil, nil, button.icon)
310307

311308
S:HandleButtonHighlight(button)
312309
S:HandleButtonHighlight(statusButton)

ElvUI/Classic/Modules/Skins/Mail.lua

+35-33
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,39 @@ local GetItemQualityColor = GetItemQualityColor
1212
local GetSendMailItem = GetSendMailItem
1313
local hooksecurefunc = hooksecurefunc
1414

15+
local function MailFrameSkin()
16+
for i = 1, _G.ATTACHMENTS_MAX_SEND do
17+
local button = _G['SendMailAttachment'..i]
18+
if not button.template then
19+
button:StripTextures()
20+
button:SetTemplate(nil, true)
21+
button:StyleButton(nil, true)
22+
end
23+
24+
local name = GetSendMailItem(i)
25+
if name then
26+
local _, _, quality = GetItemInfo(name)
27+
if quality and quality > 1 then
28+
local r, g, b = GetItemQualityColor(quality)
29+
button:SetBackdropBorderColor(r, g, b)
30+
else
31+
button:SetBackdropBorderColor(unpack(E.media.bordercolor))
32+
end
33+
34+
local icon = button:GetNormalTexture()
35+
if icon then
36+
icon:SetTexCoord(unpack(E.TexCoords))
37+
icon:SetInside()
38+
end
39+
else
40+
button:SetBackdropBorderColor(unpack(E.media.bordercolor))
41+
end
42+
end
43+
44+
_G.MailEditBox:SetHeight(_G.SendStationeryBackgroundLeft:GetHeight())
45+
_G.MailEditBox.ScrollBox.EditBox:SetTextColor(1, 1, 1)
46+
end
47+
1548
function S:MailFrame()
1649
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.mail) then return end
1750

@@ -106,41 +139,10 @@ function S:MailFrame()
106139
_G.SendStationeryBackgroundRight:Hide()
107140
_G.MailEditBox.ScrollBox:StripTextures(true)
108141
_G.MailEditBox.ScrollBox:SetTemplate()
109-
_G.MailEditBox.ScrollBox.EditBox:SetTextColor(1, 1, 1)
110142

111143
_G.SendMailTitleText:Point('CENTER', _G.SendMailFrame, 'TOP', -10, -17)
112144

113-
hooksecurefunc('SendMailFrame_Update', function()
114-
for i = 1, _G.ATTACHMENTS_MAX_SEND do
115-
local button = _G['SendMailAttachment'..i]
116-
if not button.template then
117-
button:StripTextures()
118-
button:SetTemplate(nil, true)
119-
button:StyleButton(nil, true)
120-
end
121-
122-
local name = GetSendMailItem(i)
123-
if name then
124-
local _, _, quality = GetItemInfo(name)
125-
if quality and quality > 1 then
126-
local r, g, b = GetItemQualityColor(quality)
127-
button:SetBackdropBorderColor(r, g, b)
128-
else
129-
button:SetBackdropBorderColor(unpack(E.media.bordercolor))
130-
end
131-
132-
local icon = button:GetNormalTexture()
133-
if icon then
134-
icon:SetTexCoord(unpack(E.TexCoords))
135-
icon:SetInside()
136-
end
137-
else
138-
button:SetBackdropBorderColor(unpack(E.media.bordercolor))
139-
end
140-
end
141-
142-
_G.MailEditBox:SetHeight(_G.SendStationeryBackgroundLeft:GetHeight())
143-
end)
145+
hooksecurefunc('SendMailFrame_Update', MailFrameSkin)
144146

145147
S:HandleScrollBar(_G.MailEditBoxScrollBar)
146148
S:HandleEditBox(_G.SendMailNameEditBox)
@@ -173,7 +175,7 @@ function S:MailFrame()
173175

174176
-- Open Mail Frame
175177
local OpenMailFrame = _G.OpenMailFrame
176-
OpenMailFrame:StripTextures(true) -- stupid portrait
178+
OpenMailFrame:StripTextures(true)
177179
S:HandleFrame(OpenMailFrame, true)
178180
OpenMailFrame.backdrop:Point('TOPLEFT', -5, 0)
179181
OpenMailFrame.backdrop:Point('BOTTOMRIGHT', -2, 0)

ElvUI/Core/Defaults/Profile.lua

+4-8
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,8 @@ P.general = {
181181
difficulty = {
182182
scale = 1,
183183
position = 'TOPLEFT',
184-
xOffset = 0,
185-
yOffset = 0,
186-
},
187-
challengeMode = {
188-
scale = 1,
189-
position = 'TOPLEFT',
190-
xOffset = 8,
191-
yOffset = -8,
184+
xOffset = 10,
185+
yOffset = 1,
192186
}
193187
}
194188
},
@@ -348,6 +342,8 @@ P.databars.experience.questTrackedOnly = false
348342
P.databars.experience.questCompletedOnly = false
349343
P.databars.experience.questCurrentZoneOnly = false
350344

345+
P.databars.petExperience.hideAtMaxLevel = true
346+
351347
P.databars.reputation.enable = false
352348
P.databars.reputation.hideBelowMaxLevel = false
353349
P.databars.reputation.showReward = true

ElvUI/Core/Modules/Bags/Bags.lua

+2-8
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ end
421421

422422
function B:UpdateAllSlots(frame, first)
423423
for _, bagID in next, frame.BagIDs do
424-
local holder = first and frame.isBank and (bagID and bagID ~= BANK_CONTAINER) and frame.ContainerHolderByBagID[bagID]
424+
local holder = first and frame.ContainerHolderByBagID[bagID]
425425
if holder then -- updates the slot icons on first open
426426
B:SetBagAssignments(holder)
427427
end
@@ -1151,11 +1151,6 @@ function B:PLAYER_AVG_ITEM_LEVEL_UPDATE()
11511151
end
11521152
end
11531153

1154-
function B:PLAYER_ENTERING_WORLD(event)
1155-
B:UpdateLayout(B.BagFrame)
1156-
B:UnregisterEvent(event)
1157-
end
1158-
11591154
function B:UpdateLayouts()
11601155
B:Layout()
11611156
B:Layout(true)
@@ -2249,7 +2244,7 @@ function B:OpenBags()
22492244
if B.BagFrame:IsShown() then return end
22502245

22512246
if B.BagFrame.firstOpen then
2252-
B:UpdateAllSlots(B.BagFrame)
2247+
B:UpdateAllSlots(B.BagFrame, true)
22532248
B.BagFrame.firstOpen = nil
22542249
end
22552250

@@ -2945,7 +2940,6 @@ function B:Initialize()
29452940
B:DisableBlizzard()
29462941
B:UpdateGoldText()
29472942

2948-
B:RegisterEvent('PLAYER_ENTERING_WORLD')
29492943
B:RegisterEvent('PLAYER_MONEY', 'UpdateGoldText')
29502944
B:RegisterEvent('PLAYER_TRADE_MONEY', 'UpdateGoldText')
29512945
B:RegisterEvent('TRADE_MONEY_CHANGED', 'UpdateGoldText')

ElvUI/Core/Modules/Bags/Sort.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@ function B:CanItemGoInBag(bag, slot, targetBag)
607607
local _, bagType = GetContainerNumFreeSlots(targetBag)
608608
if bagType == 0 then
609609
return true -- target bag is normal
610-
elseif bagType then
610+
elseif bagType and classID ~= 11 then -- prevent quiverception
611611
local itemFamily = GetItemFamily(item)
612612
if itemFamily then
613613
return band(itemFamily, bagType) > 0

0 commit comments

Comments
 (0)