SetBackdropBorderColor removed in 9.0?
Hello,
While testing one of my addons on the PTR server, I got this error: Code:
attempt to call method 'SetBackdropBorderColor' (a nil value) Code:
<Scripts> Thanks. |
Might be related to this ... https://us.forums.blizzard.com/en/wo...beta/586355/11
"One of the major changes in 9.0 is a change to SetBackdrop. The TL/DR, on live, 100% of frames support backdrops, whether they are used or not. 1000s of frames between every addon and default UI, even frames that never see such as event frames have backdrops. UI team realized this is a serious performance issue. so effective in 9.0, no frames have backdrops unless the addon imports/inherits the backdrop template. this means addons that aren’t importing them now throw nil errors with method “Setbackdrop”. This issue affects a large number of addons." |
Thank you very much.
|
Quote:
|
Quote:
Retail PTR is showing as 8.3.7 to me .. so I assume they are talking about the Beta which has the Backdrop changes in place. |
Sorry, I'm talking about the beta (9.x).
|
How does one import or inherit the SetBackdrop template? Preferably in Lua. I dislike XML.
|
Code:
local f = CreateFrame("Frame", nil, self, BackdropTemplateMixin and "BackdropTemplate") Then use as normal: Code:
f:SetBackdrop({ ... }) |
Cool, thanks. Do the mixin and template exist on 8.3.x? I'm guessing no.
|
Quote:
https://www.townlong-yak.com/framexml/beta Backdrop.lua / Backdrop.xml |
Using:
Code:
BackdropTemplateMixin and "BackdropTemplate" |
I don't understand how could I apply alpha to a texture/background using this new syntax:
Code:
f.Backdrop = _G[name.."Backdrop"] or CreateFrame("Frame", name.."Backdrop", f, "BackdropTemplate") |
Same as normal. The Mixin that is applied when using the template applies all the pre 9x backdrop methods to the frame. Nothing really changes once you've inherited the template.
Lua Code:
Example |
Quote:
Thank you very much :) |
Quote:
As I am actually in the process of update my addons to 9.x, I would like some of them to work in Classic. The problem is many of my frames are defined in XML, and of course inherits="BackdropTemplate" raises an error in Classic. So, if Classic will not use BackdropTemplate, is there a way to dynamically modify an inheritance defined in XML? Thanks. |
Test and add a backdrop frame in the OnLoad script:
This adds an extra frame for the backdrop rather than just inheriting the template. Code:
<Frame> |
Nice trick, thank you :)
|
Once again, not mine. I don't have beta access.
This would need to add some "pass-through" methods to the parent frame if you are modifying the backdrop during play and want to maintain the single code base for retail and classic. |
Adding this since it's probably useful:
If you want to add a backdrop to a frame you don't control the creation of (e.g. from another addon), you can mix in the mixin: Lua Code:
Then you should be able to use :SetBackdrop and the likes on that frame. |
Quote:
Now I just have to use this code on OnLoad of my old frames, without inherits="BackdropTemplate" and it works on both 8.x and 9.0 versions: Code:
---------------------------------- testing WoW version |
Quote:
Something like that? Lua Code:
|
It would be
Code:
local BackdropFrames = _G[AddOn.BackdropFrames[i]] It would depend on whether the template (common method for adding a mixin) adds any frame elements required by the mixin. If all it's doing is applying a bunch of methods to an already existing (or created in the process) frame then that would work. Or you could add the template frame elements "manually" when you apply the mixin if you weren't responsible for creating the frame(s). p3lim's post seems to indicate, for backdrops, that it's just applying the mixin methods. You just need to make sure you've applied the mixin before any of your code calls any of the methods on the frames. |
Thanks for the explanation.
In my UI I work with a set template function that controls the appearance of the frames. That's where I've added the mixin. Works well so far and so far there were no problems when testing. |
Can someone explain the SetBackdrop-fuckup for a dummie like me and how to fix LibQTip (https://www.wowace.com/projects/libqtip-1-0/) as an example?
I tried replacing line 364 tooltip = CreateFrame("Frame", nil, UIParent) with tooltip = CreateFrame("Frame", nil, UIParent, "BackdropTemplate") and as this didnt worked I added ', "BackdropTemplate"' to every CreateFrame which doesnt work either. What am I doing wrong? TIA! |
I've tested it with a simple tooltip and it works with only the line 364 changed.
Make sure you load your altered version and no other older version is available. Edit: My test was too simple. Had no release implemented. There is more to it. Edit2: Function in Line 179 (only clear backdrop if the frame has it implemented) Lua Code:
Line 226 Lua Code:
|
There a several places the library would need to be updated depending on which parts you are using.
Things like around line 517 in InitializeTooltip(tooltip, key) Code:
local backdrop = GameTooltip:GetBackdrop() Code:
if not tooltip.SetBackdrop then |
@Rilgamon and @Fizzlemizz
thank you both very much :banana: @Fizzlemizz: yes I noticed and did so following your example end result here: https://pastebin.com/DxRyHy9C |
A side note for future travelers, applying the Mixin directly would primarily be used for frames you didn't create but wanted to set a backdrop on (as p3lim pointed out earlier in the thread).
In the library, because lines are created by it, instead of applying the Mixin at Code:
tipPrototype:AddSeparator(height, r, g, b, a) Code:
local function AcquireFrame(parent) |
Sorry for another dumb question but how do I get the BackdropTemplate when the frame is created in an xml?
Code:
<Frame name="PTFrameTemplate" frameStrata="LOW" enablemouse="true" movable="true" clampedtoscreen="true" hidden="true" virtual="true" ???="BackdropTemplate"> TIA |
Code:
inherits="BackdropTemplate" |
Sorry if I intrude .. Could someone help me understand how to fix the LUA errors resulting from the "backdrop" on the Stuf Unit Frames addon? (https://www.wowinterface.com/downloa...?id=11182#info)
Thanks a lot.. |
Did everyone else get a darkened frame after applying the new backdrop template ?
If you did, where did you find the issue was ? Edit: Nevermind, it appears the addition of the backdrops to certain frames on nUI affected the current alpha state visual. Simply changing them from 0.75 to 0.35 allowed the text to display easier. |
I have noticed that SetBackdrop() now creates 9 textures instead of the typical 8 (4 edges + 4 borders). I have no idea what the last texture is.
I have noticed this because I use backdrops to create 1px borders on casting bars, and I need to access those textures to change the backdrop's Layer (so it doesn't get covered by the StatusBar filling texture). |
Quote:
|
Quote:
|
When using the addon ItemRack https://www.curseforge.com/wow/addons/itemrack I am getting the following error:
Message: ..\AddOns\ItemRack\ItemRack.lua line 1733: attempt to call method 'SetBackdropBorderColor' (a nil value) I tried updating ItemRack.lua but I've had no success whatsoever. Is there some kind soul out there who could take a quick look and see what might possibly have to be changed to get this addon working correctly once more? Thanks in advance! --------------------- Never mind, I managed to figure it out myself. |
Hi,
is there anyway to fix the Backdrop for (https://www.curseforge.com/wow/addon...alui-bossskins)? Since the 9.0.1 update the Background for Bars and Icons with this DBM skin is gone |
First thing is is your installation of RealUI up to date? The second thing is that addon hasn't been updated since 2016, so, it's probably a bit out of date by now (what with the updates to the game (9.0.1 changedthebackdrop coding so...)).
|
This Addon always ran without RealUI, wich i dont use, also it ran perfectly fine until the 9.0 update, it still works perfect actually, only the background of the bar and icon is missing now
|
Quote:
|
Have you successfully resolved the issue with SetBackdropBorderColor in your addon on the PTR server? Also, have you considered exploring the suggestions from the WoW forums, like the changes to SetBackdrop in version 9.0?
|
I'm not sure if this is asking an actual question or not.
Backdrops are now optional for frames where they used to be rolled into every frame by default. A frame can get back all the old backdrop functionality by either inheriting the "BackdropTemplate" when it created or for an existing frame you can do something like Lua Code:
|
All times are GMT -6. The time now is 03:31 PM. |
vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI