Quantcast
SetBackdropBorderColor removed in 9.0? - Page 2 - WoWInterface
Thread Tools Display Modes
08-06-20, 02:46 AM   #21
liquidbase
A Warpwood Thunder Caller
 
liquidbase's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2010
Posts: 95
Originally Posted by p3lim View Post
Lua Code:
  1. Mixin(yourFrame, BackdropTemplateMixin)
One question about this, can I also adapt it so that I have a table with all frames where I needed the backdrop template and add it here automatically with a for-loop?

Something like that?
Lua Code:
  1. AddOn.BackdropFrames = {
  2.     "frame1",
  3.     "frame2",
  4. }
  5. for i = 1, getn(AddOn.BackdropFrames) do
  6.     local BackdropFrames = AddOn.BackdropFrames[i]
  7.     if BackdropFrames then
  8.         Mixin(BackdropFrames, BackdropTemplateMixin)
  9.     end
  10. end

Last edited by liquidbase : 08-06-20 at 03:07 AM.
  Reply With Quote
08-06-20, 11:45 AM   #22
Fizzlemizz
I did that?
 
Fizzlemizz's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Dec 2011
Posts: 1,257
It would be
Code:
local BackdropFrames = _G[AddOn.BackdropFrames[i]]
unless the table stored the reference to the created frame rather than its name.

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.
__________________
Fizzlemizz
Maintainer of Discord Unit Frames and Discord Art.
Author of FauxMazzle, FauxMazzleHUD and Move Pad Plus.
  Reply With Quote
08-07-20, 12:53 AM   #23
liquidbase
A Warpwood Thunder Caller
 
liquidbase's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2010
Posts: 95
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.
  Reply With Quote
08-17-20, 04:49 AM   #24
Drudatz
A Deviate Faerie Dragon
Join Date: Aug 2009
Posts: 19
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!
  Reply With Quote
08-17-20, 07:56 AM   #25
Rilgamon
Premium Member
 
Rilgamon's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Sep 2009
Posts: 778
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:
  1. local function ReleaseFrame(frame)
  2.     frame:Hide()
  3.     frame:SetParent(nil)
  4.     frame:ClearAllPoints()
  5.     if(frame.SetBackdrop) then
  6.         frame:SetBackdrop(nil)
  7.     end
  8.     ClearFrameScripts(frame)
  9.  
  10.     tinsert(frameHeap, frame)
  11.     --[===[@[email protected]
  12.     usedFrames = usedFrames - 1
  13.     [email protected]@]===]
  14. end

Line 226

Lua Code:
  1. cell = setmetatable(CreateFrame("Frame", nil, UIParent, "BackdropTemplate"), self.cellMetatable)
__________________
The cataclysm broke the world ... and the pandas could not fix it!

Last edited by Rilgamon : 08-17-20 at 08:34 AM.
  Reply With Quote
08-17-20, 08:45 AM   #26
Fizzlemizz
I did that?
 
Fizzlemizz's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Dec 2011
Posts: 1,257
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()
would be followed by
Code:
if not tooltip.SetBackdrop then
	Mixin(tooltip, BackdropTemplateMixin)
end
tooltip:SetBackdrop(backdrop)
__________________
Fizzlemizz
Maintainer of Discord Unit Frames and Discord Art.
Author of FauxMazzle, FauxMazzleHUD and Move Pad Plus.
  Reply With Quote
08-17-20, 12:00 PM   #27
Drudatz
A Deviate Faerie Dragon
Join Date: Aug 2009
Posts: 19
@Rilgamon and @Fizzlemizz
thank you both very much

@Fizzlemizz:
yes I noticed and did so following your example
end result here: https://pastebin.com/DxRyHy9C
  Reply With Quote
08-17-20, 01:19 PM   #28
Fizzlemizz
I did that?
 
Fizzlemizz's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Dec 2011
Posts: 1,257
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)
you could inherit the template where the line is created

Code:
local function AcquireFrame(parent)
	local frame = tremove(frameHeap) or CreateFrame("Frame", nil, nil, "BackdropTemplate")
Both methods work but the second might save some code if after frame creation, you branch into different functions that also apply backdrops but possibly using different styles etc. (the template does the job of applying the mixin without extra lines of code)
__________________
Fizzlemizz
Maintainer of Discord Unit Frames and Discord Art.
Author of FauxMazzle, FauxMazzleHUD and Move Pad Plus.

Last edited by Fizzlemizz : 08-17-20 at 02:19 PM.
  Reply With Quote
09-02-20, 08:48 PM   #29
Drudatz
A Deviate Faerie Dragon
Join Date: Aug 2009
Posts: 19
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">
I need to know what to write in place of the ???.

TIA
  Reply With Quote
09-02-20, 09:16 PM   #30
Ketho
A Molten Giant
 
Ketho's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2010
Posts: 931
Code:
inherits="BackdropTemplate"
https://github.com/Stanzilla/WoWUIBu...es#xml-changes
  Reply With Quote

WoWInterface » PTR » PTR API and Graphics Changes » SetBackdropBorderColor removed in 9.0?

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off