BagSync

BagSync

3M Downloads

Battle pet tooltip overlapping with other tooltip attachments

tflo opened this issue Β· 32 comments

commented

BagSync's pet tooltip attachment is overlapping with other tooltip attachments, namely BattlePetBreedID. See a few examples here:

BattlePetBreedID + BagSync WoWScrnShot_121822_200950 WoWScrnShot_121822_205215

Also if we throw in some additional tooltips:

BattlePetBreedID + TSM + BagSync WoWScrnShot_121822_205359
BattlePetBreedID + Oribos Exchange + BagSync WoWScrnShot_121822_203107

It seems BagSync is always docking directly to the pet tooltip, no matter if there are others, whereas TSM, BattlePetBreedID and Oribos are respecting the presence of the other attachments and are docking to each other, in the order Oribos > BattlePetBreedID > TSM.

Overlapping with TSM is not a huge issue, as I usually have the TSM tooltip on a modifier key. Oribos Exchange hasn't been updated since 4 Dec, so probably it is dead anyway. But BattlePetBreedID is pretty much a standard addon for pet collectors/traders, so a "peaceful coexistence" of BattlePetBreedID and BagSync would be a nice thing :)

– Tom

commented

I'm sure they have their reasons.

Maybe. Or maybe not. Somehow I doubt the competence of the guys behind TSM. Quality-wise TSM is certainly one of the worst addons I'm using, I've never seen a version where I could say it's pretty bugfree. Until a few days ago it errored out every other time I tried to add an item to a group (seems fixed now). Heck, a year ago or so, you couldn't make any change to your custom price sources without reloading, or the client would freeze somewhere in the next minutes. Took them months to fix that (probably their coder is an ex-Blizz employee, LOL).

Some years ago I contacted them once on their Discord for an issue, but my impression was that they weren't really interested in hearing about issues…

Unfortunately, if you're playing the AH game, you have no choice but TSM.

Rant over ;)

Hopefully the new version of BagSync v18.4 I released helps you out.

Sorry, haven't noticed that you already released. Just found it on Wago as "6h ago". Curseforge seems to have issues:

Screen Shot 2022-12-19 at 22 11 27-pty-fs8

Will test it as soon as possible.

Hmmm that's concerning? BagSync isn't working on Curseforge? I released it quite awhile ago.

commented

BS + BPBID + TSM
Oh for the love of.... they put their tooltip on TOP of the TSM tooltip. Of course mine will break because I told it to mount to the bottom of the BPBID tooltip. You would think BPBID would mount under TSM. (facepalm)

BS + BPBID + Oribos + TSM
Here the BPBID is overlapping TSM because they put priority on LibExtraTip and didn't check to see if both are enabled. Also once again it would have been fixed if they just put it under the TSM tooltip. Oddly enough, somehow, someway, and in some magical universe, it looks like TSM detected LibExtraTip and went under it. I'm baffled and will have to review the code on how in the heck they did that as I couldn't find traces of LibExtraTip. So I'm I'm going to go on a hunch and say they are detecting a variable on GameTooltip somewhere that LibExtraTip uses.

commented

BPBID should really detect if LibExtraTip and TSM is enabled and adjust accordingly. They also really should mount under the TSM tooltip. πŸ’«

commented

I see it on the CF site, but still not available via WoWUp CF app.

Curseforge app doesn't see it either:

Screen Shot 2022-12-20 at 00 05 18-pty-fs8

commented

Now to the new version:

It works perfectly fine now with BPBID:

BS + BPBID

bs alone-pty-fs8

Issue solved βœ… 🍺 πŸ˜ƒ


Also with BPBID and Oribos (LibExtraTip):

BS + BPBID + Oribos

oribos-pty-fs8


But not when TSM comes into play:

BS + BPBID + TSM

tsm-pty-fs8

BS + BPBID + Oribos + TSM

WoWScrnShot_122022_004151-pty-fs8

Please note that I'm mentioning the non-working cases only for the sake of completeness and because maybe you thought it would work too (not sure). Personally I do not care at all about them.

Issue solved for me, congrats and many thanks for the quick fix! πŸ˜„


Edit: Moved BS + BPBID + TSM to non-working section. I start getting confused with all those tooltips πŸ˜΅β€πŸ’«

commented

Id have to look into it, but it could be that these addons share the same tooltip library or they are hard-coding it into their addons. I use a universal open source library called LibQTip (https://www.curseforge.com/wow/addons/libqtip-1-0). It's been around for a long time and plenty of addons use it. I know Auctioneer utilizes their own called ExtraTip or some such. It's not impossible, but unless all addons that do additional tooltips utilize the same library, it would be difficult to get them to all play nice with each other. I hope you understand what I'm trying to convey. It gets tricky when not all addons utilize the same utilities. The only exception to this rule is Ace3 which is universally accepted. πŸ˜„ Either way, I will look into this and see if there is anything I can do to alleviate the issue.

commented

At a quick glance it's what I thought.

breedtip = _G[breedtiptext] or CreateFrame("GameTooltip", breedtiptext, nil, "GameTooltipTemplate")

 -- Check for existence of LibExtraTip
 local extratip = false
 if (internal.LibExtraTip) and (internal.LibExtraTip.GetExtraTip) then
     extratip = internal.LibExtraTip:GetExtraTip(parent)

     -- See if it has hooked our parent
     if (extratip) and (extratip:IsVisible()) then
         parent = extratip
     end
 end

 -- Set positioning/parenting/ownership of Breed Tooltip
 breedtip:SetParent(parent)
 breedtip:SetOwner(parent, "ANCHOR_NONE")
 breedtip:SetPoint("TOPLEFT", parent, "BOTTOMLEFT", 0, tooltipDistance or 2)
 breedtip:SetPoint("TOPRIGHT", parent, "BOTTOMRIGHT", 0, tooltipDistance or 2)

 -- Workaround for TradeSkillMaster's tooltip
 -- Note that setting parent breaks floating tooltip and setting two corner points breaks borders on TSM tooltip
 -- Setting parent is also required for BattlePetTooltip because TSMExtraTip constantly reanchors itself on its parent
 if (_G.IsAddOnLoaded("TradeSkillMaster")) then
     for i = 1, 10 do
         local t = _G["TSMExtraTip" .. i]
         if t then
 			-- It probably never matters which point we check to learn the relative frame
 			-- This is because TSM tooltips should only be relative to one frame each
 			-- If this changes in the future or this assumption is wrong, we'll have to iterate points here
             local _, relativeFrame = t:GetPoint()
             if (relativeFrame == BattlePetTooltip) then
                 t:ClearAllPoints()
                 t:SetParent(BPBID_BreedTooltip)
                 t:SetPoint("TOP", BPBID_BreedTooltip, "BOTTOM", 0, -1)
             elseif (t:GetParent() == FloatingBattlePetTooltip) then
                 t:ClearAllPoints()
                 t:SetPoint("TOP", BPBID_BreedTooltip2, "BOTTOM", 0, -1)
             end
         end
     end
 end

BattlePetBreedID is creating their own Tooltip and then compensating if they find LibExtraTip (which is Auctioneer) and TSM tooltip independently. Which means that those addons probably have no code or have written any priorities for BattlePetBreedID.

I'd have to see about conflicts and such. But we then get into a situation with priorities and order of tooltips. Who gets the primary slot? Who then follows and which addons should be in what slot? What if TSM is demanding to be on top? Does Oribos or Auctioneer follow next? Does BagSync or does BattlePetBreedID? These are the types of issues that happen with these external Tooltips if not everyone is utilizing the same Library sadly. I think LibExtraTip from Auctineer though DOES allow for smart parenting by acquiring the next available location slot. So technically speaking if I migrated to that it would in theory work properly with at least Auctioneer and TSM... I THINK 🀣 . Though that would mean me using a Library that is bundled with Auctioneer and I'd have to ask them for permission to use it, I believe. Since BattlePetBreedID is checking for it, technically it should play nice. If anything it would be something like... (maybe?) Tooltip -> Auctioneer -> BagSync -> TSM -> BattlePetBreedID. I'm not entirely sure though hehe. Regardless, I will totally look into this more for you.

commented

I just skimmed through the files and was about to post the same snippet from BattlePetBreedID ;) So, with the hard-coding you were right.

Concerning the order and such: As said in my OP, collisions with TSM and Oribos tooltips are not really issues: TSM can be bound to a modifier, and Oribos is maybe dead. (And if not, I don't think many people are using it. I also use it only on my AH chars.)

Just BattlePetBreedID: This is really a widely used an important addon. The whole breed recognition in WoW depends on it, even Rematch depends on it.

So, I would concentrate on that, and leave TSM and Oribos aside (basically I only mentioned them as examples for not-conflicting). This will simplify the whole thing dramatically.

commented

Just did a search in my addon folders: LibExtraTip is indeed not very common. It is only used by Auctioneer, Oribos Exchange and TheUndermineJournal (same author as Oribos).

commented

My comment "are there any other addons that attach to the battle pet tooltip" was not meant as criticism of your method, rather a little brainstorming if there are other attaching addons that should be considered. (Since you spoke about "possible other addons in the future".)

commented

My comment "are there any other addons that attach to the battle pet tooltip" was not meant as criticism of your method, rather a little brainstorming if there are other attaching addons that should be considered. (Since you spoke about "possible other addons in the future".)

Oh you misunderstood me or have interpreted my musings as hostile, I didn't take anything you have said as criticism. I'm just brainstorming and typing as I think that's all. Honestly, I appreciate your suggestions and detective work into looking into possible fixes. My mind goes all over the place and I try to juggle possibilities together. There is no bad vibes I assure you. πŸ˜„

commented

Good. I like musings :)

commented

Hmmmm interesting, it would appear that LibExtraTip does not create additional tooltips when Aquired/Created. Rather it recycles the same tooltip an adds to it based on additional addons requesting it's use. I had hoped that Aquiring/Creating a new tooltip with LibExtraTip would anchor it to the bottom of any other previously created ones. Thus making it easy to add additional tooltips. Instead it seems to acquire any already registered to the Parent Tooltip and recycle it to add additional context. I'll have to verify this but reviewing the code this seems the case. Which by the way so happens to be exactly how LibQTip works. Odd.... I could have sworn I recall LibExtraTip creating additional Tooltips in squares under each other.

I must be going bonkers...

commented

BattlePetBreedID

Will be looking at this ticket today and evaluate possibilities. Simpliest solution would be to auto adjust based on BattlePetBreedID tooltip position. However, this will include issues with possible other addons in the future. Need to evaluate best possible solution for futureproofing things. Including possibility of switching to LibExtraTip. It's possible that library also makes adjustments for TSM but I have not reviewed the code yet. XD Sometimes I just wish everyone just used LibQTip or at least one uniformed External Tooltip display. I'm surprised the Ace3 team never developed one.

commented

If you don't have much time, try the "economic" way: Write up the BagSync-specific conditional(s) for BattlePetBreedID, and ask the author to implement it. Obviously this will not make you compatible with TSM, Oribos, TheUndermineJournal, …, but the BattlePetBreedID issue would be out of the way and you can continue using LibQTip without patching it or hooking into.

commented

BTW, are there any other addons that attach to the battle pet tooltip? I can't think of one at the moment, but that doesn't mean much ;)

(PetTracker writes into the pet tooltip; ArkInventory replaces the whole tooltip with its own custom pet tooltip (it provides a public API, if you are interested in being compatible with it).)

commented

BTW, are there any other addons that attach to the battle pet tooltip? I can't think of one at the moment, but that doesn't mean much ;)

(PetTracker writes into the pet tooltip; ArkInventory replaces the whole tooltip with its own custom pet tooltip (it provides a public API, if you are interested in being compatible with it).)

The reason I didn't write into the BattlePetTooltip is there were a few addons that were clearing and rewriting the tooltip data. Which was overwriting my BagSync tooltip data. I had no choice but to make it exterior so they stop touching it. In terms of Ark, it would be additional code added to add support. Like I mentioned before this whole extra tooltip opens a can of worms and requires band-aid fixes all over the place to get addons to work with each other. I mean even Ark created their own API to get addons to work with it. Imagine other addon authors doing the same. I'd have to write up code for every single addon each time this happens. It's crazy XD

I'm looking into a few alternatives at the moment. Reviewing both hard-coding a simple check for BattlePetTooltip and a possible use of LibExtraTip. Since I use LibQTip for more than just the BattlePetTooltip when it's enabled fully.

commented

BattlePetBreedID

If that is the case then it's deeply hidden in their code. 🀣 Hehe, I did general searches for "BPBID" or "BPBID_BreedTooltip" or "BPBID_BreedTooltip2" which are the BattlePetBreedID tooltips and I didn't find anything in TSM code at all anywhere. I use (https://www.mythicsoft.com/agentransack/) to do broad searches using patterns in directories containing text.

I also didn't see any reference BattlePetBreedID at all in the TSM code at all, anywhere. The only code I did find is in their Wrapper.lua file that has wraps for other addons. including ArkInventory but not BattlePetBreedID . They also have tons of hooks to the built in Blizzard BattlePetTooltip. Reviewing it there really isn't even any reference to any LibExtraTip or it's related functions at all either. It's possible I'm just overlooking it. (That happens sometimes LOL) If you find anything let me know! I'd be glad to investigate it and add implementations if necessary. Usually when an addon checks to see if another is loaded, they use "IsAddOnLoaded" or the primary Addon object like "ArkInventory" to check. Unless they are specifically looking for an object like a tooltip or frame. Yet, in this case I don't see any references to LibExtraTip or BattlePetBreedID anywhere in the TSM code.

It's possible that LibExtraTip is checking for TSM, but I reviewed that code too and I didn't see any checks for it. LibExtraTooltip tooltips start with "LibExtraTip" in the front. I couldn't find any reference to it in TSM. TSM tooltips are called "TSMExtraTip", I did a broad search for "TSM" or "TradeSkillMaster" in Auctioneer install directory and couldn't find anything. So if they are working together, then it's something very deeply connected that I'd need to review carefully with some debugging.

BattlePetTooltip does however do a check for LibExtraTip and TSMExtraTip.

It's a bit of a mess 🀣 , I'm just putting together some ramblings of the stuff I've discovered. Please feel free to keep ticketing or posting your findings! I welcome dialog and if you find anything please don't hesitate to share. Hope you are having a happy holiday season. πŸŽ„

commented

Alrighty so I did a little compensation. I did support for both ArkInventory and checks for BattlePetBreedID. The only time that the external LibQTip will be shown for ArkInventory will be if a user enables it in BagSync options. Otherwise it will display the tooltip data inside the actual tooltip. If at any point the LibQTip is displayed and BattlePetBreedID is being used, then it will compensate for the location of BattlePetBreedID.

So the following scenarios.

  • BagSyncQTip disabled + Arkinventory = Display inside Tooltip
  • BagSyncQTip enabled + Arkinventory = Display outside in LibQTip
  • BagSyncQTip disabled + Arkinventory + BattlePetBreedID = Display inside Tooltip
  • BagSyncQTip enabled + Arkinventory + BattlePetBreedID = Display outside in LibQTip under BattlePetBreedID

Note I didn't take into effect Auctioneer or TSM. I'm relying on BattlePetBreedID to auto adjust and then display LibQTip under it.

That should do it I think. πŸ˜„ πŸŽ‰ I'd have to give it a few tests but it seems to be working.

commented

Note I didn't take into effect Auctioneer or TSM. I'm relying on BattlePetBreedID to auto adjust and then display LibQTip under it.

So, if i understand correctly, you have elegantly offloaded some work to BattlePetBreedID? Nice 😎

Only the people who aren't using BattlePetBreedID will get overlapping BagSync/TSM/Oribos tooltips, right? (But people who aren't using BattlePetBreedID are very likely people who completely ignore the battle pet part of the game. We shouldn't care too much about those πŸ™„ )

commented

Note I didn't take into effect Auctioneer or TSM. I'm relying on BattlePetBreedID to auto adjust and then display LibQTip under it.

So, if i understand correctly, you have elegantly offloaded some work to BattlePetBreedID? Nice 😎

Only the people who aren't using BattlePetBreedID will get overlapping BagSync/TSM/Oribos tooltips, right? (But people who aren't using BattlePetBreedID are very likely people who completely ignore the battle pet part of the game. We shouldn't care too much about those πŸ™„ )

Pretty much. I let BattlePetBreedID do all the work of figuring out TSM and Auctioneer and then I display under it's tooltip. I didn't add checks for TSM or Auctioneer. TSM uses their own Tooltip library called ExtraTip (facepalm). Auctioneer uses LibExtraTip (facepalm). Neither of the addons even check for each other btw. I double checked the code, unless there is some magic somewhere I'm not seeing, (chuckles Which could be possibility! 🀣) TSM and Auctioneer tooltips should technically overlap. I didn't see any code in either of their libraries that check for each other. Which I find odd, unless I overlooked something.

At this point it looks like everyone is just using their own libraries. The smaller less known addons have to compensate for the more widely used ones at this point. It happens and that's okay, just requires a little bit more work.

If things get hairy in the future and enough people complain, I'll add support for the TSM and Auctioneer external tooltips. I think the current solution is okay so long as it works for you. πŸ˜„

commented

I double checked the code, unless there is some magic somewhere I'm not seeing, (chuckles Which could be possibility! 🀣) TSM and Auctioneer tooltips should technically overlap

I've never seen TSM and Oribos (LibExtraTip) overlap in the past, so I did a quick test with BattlePetBreedID tooltip disabled: I don't get any TSM pet tooltip at all!

So, it seems the TSM tooltip is relying on BattlePetBreedID not only for not overlapping, it completely depends on it. Probably an oversight on their side.

commented

You are right, it is not TSM's fault. It's sloppiness of BPBID:

They have forgotten to undo the effects of their TSM hook, if the tooltip gets disabled in the options. After a reload with BPBID tooltips disabled everything is fine and the TSM tooltip is back.

If I add a (hackish) hook undo to OptionsPanel.lua, then it works correctly, also without reload:

Options:SetScript('OnHide', function()
    if _G.IsAddOnLoaded 'TradeSkillMaster' and not OptTooltipsBPT:GetChecked() then
        for i = 1, 10 do
            local t = _G['TSMExtraTip' .. i]
            if t then t:SetParent(BattlePetTooltip) end
        end
    end
end)
commented

I'm sure they have their reasons.

Maybe. Or maybe not. Somehow I doubt the competence of the guys behind TSM. Quality-wise TSM is certainly one of the worst addons I'm using, I've never seen a version where I could say it's pretty bugfree. Until a few days ago it errored out every other time I tried to add an item to a group (seems fixed now). Heck, a year ago or so, you couldn't make any change to your custom price sources without reloading, or the client would freeze somewhere in the next minutes. Took them months to fix that (probably their coder is an ex-Blizz employee, LOL).

Some years ago I contacted them once on their Discord for an issue, but my impression was that they weren't really interested in hearing about issues…

Unfortunately, if you're playing the AH game, you have no choice but TSM.

Rant over ;)


Hopefully the new version of BagSync v18.4 I released helps you out.

Sorry, haven't noticed that you already released. Just found it on Wago as "6h ago". Curseforge seems to have issues:

Screen Shot 2022-12-19 at 22 11 27-pty-fs8

Will test it as soon as possible.

commented

You are right, it is not TSM's fault. It's sloppiness of BPBID:

They have forgotten to undo the effects of their TSM hook, if the tooltip gets disabled in the options. After a reload with BPBID tooltips disabled everything is fine and the TSM tooltip is back.

If I add a (hackish) hook undo to OptionsPanel.lua, then it works correctly, also without reload:

Options:SetScript('OnHide', function()
    if _G.IsAddOnLoaded 'TradeSkillMaster' and not OptTooltipsBPT:GetChecked() then
        for i = 1, 10 do
            local t = _G['TSMExtraTip' .. i]
            if t then t:SetParent(BattlePetTooltip) end
        end
    end
end)

Ah that would totally make sense. They probably just forgot to release it. I happens πŸ˜„ . I figured that it was BPBID. Like I mentioned in my long ramblings above, I couldn't find any references to LibExtraTip or TSMExtraTip in either TSM or Auctioneer. So I'm going to assume they work indepdently. That was a nice catch though! Hopefully the new version of BagSync v18.4 I released helps you out.

commented

So something interesting. It looks like at some point TSM did in fact used LibExtraTip at one time. They removed support for it and wrote their own External Tooltip library. It must be fairly new as there are commits of it using LibExtraTip as far back as July of this year.

We can use GitHub searches to get a general view (not completely accurate but gives us a glimpse) at the use of TSMExtraTip .
Their new library that uses TSMExtraTip is barely used or recognized by addons it would seem.
https://github.com/search?q=TSMExtraTip&type=code
That has only 96 code references and most of it is TSM code or forks of TSM. With only 1 issue, your ticket that references it.

If you look up LibQTip though.
https://github.com/search?q=LibQTip&type=code
It has over 3,000 code references, 632 commits, and 122 issues. Like I mentioned before, LibQTip has been around for a long time and is used for a lot of DataBroker addons.

Take a look at LibExtraTip
https://github.com/search?q=LibExtraTip&type=code
It has 4,000 code references, 71 commits and 318 issues.

So based on the above we can assume that TSMExtraTip is fairly new and unsupported mostly. I honestly think they should have just stuck with using LibExtraTip. There was no need to go out and make their own library. They could have also used LibQTip. But that's just my opinion of course ;) I'm sure they have their reasons.

commented

Found it, my hunch was correct. They were relying on checking for a function in the tooltip object to determine if LibExtraTip is being used.

In the TSM ExtraTip.lua

Here they are pushing all the children of the frames GameTooltip or BattlePetTooltip) into a function GetExtraTipFrame.

	OnUpdate = function(self)
		local tooltip = self:GetParent()
		local anchorFrame = private.GetExtraTipFrame(tooltip, tooltip:GetChildren()) or tooltip
		if anchorFrame ~= self.anchorFrame then
			self:ClearAllPoints()
			if self.isTop then
				self:SetPoint("BOTTOM", anchorFrame, "TOP")
			else
				self:SetPoint("TOP", anchorFrame, "BOTTOM")
			end
			self.anchorFrame = anchorFrame
		end
	end,

So if you look at that function

function private.GetExtraTipFrame(tooltip, ...)
	for i = 1, select('#', ...) do
		local frame = select(i, ...)
		if frame.InitLines and frame:GetParent() == tooltip and frame:IsVisible() then
			return frame
		end
	end
end

It's for a for loop count through the number of children. If the frame of the child has the function/method InitLines and the parent is the tooltip we are using and it's visible, then return that child frame. LibExtraTip uses InitLines as well, so it will detect it as a child and make sure to apply under it. This is because it's looping through all the children.

It's actually a clever way of doing it. I will admit.

commented

I added better support for the External tooltips for TradeSkillMaster, Oribos Exchange, LibExtraTip, BattlePetBreedID, etc..

basically BagSync will scan all the tooltips and find the one CLOSEST to the edges of the screen. This would mean it's the lowest one possible attached to GameTooltip. It will then attach to that Tooltip to be the last one possible.

I installed TSM, Oribos Exchange and BattlePetBreedID and tested out various combinations and they all work properly now with BagSync External Tooltip (LibQTip). In version v18.5 of BagSync.

commented

NOTE: If BattlePetBreedID is still messing up for whatever reason, they need to clean up their code or update it. BagSync will always grab the bottom or top most tooltip attached.

commented

I added better support for the External tooltips for TradeSkillMaster, Oribos Exchange, LibExtraTip, BattlePetBreedID, etc..

Looks good so far πŸ˜‹

And yes, Oribos has risen from the dead today. So, you did well.

commented

Hey, BPBID author here; I'll fix the part of this bug that's on my end, specifically relating to enabling/disabling options in BPBID. Thanks @tflo for bringing it to my attention in MMOSimca/BattlePetBreedID#7.

BPBID should really detect if LibExtraTip and TSM is enabled and adjust accordingly.

I think the problem is that I handle 2 of these tooltip library interactions but not all 3. I'll try to replicate the same scenarios mentioned above and make sure it is handling all 3. Let me know if there's any specific changes I can make to help here.

They also really should mount under the TSM tooltip. πŸ’«

My reasoning at the time of that decision (which was admittedly like 10 years ago) was thus:

  • TSM is extremely popular
  • My addon is less popular than TSM
  • Other addons are probably more likely to mount under TSM than above it, therefore any solution I use where I mount above is it less likely to conflict

It's a tricky situation for sure and why I have contemplated using LibQTip myself. I'm not sure what end users would prefer in terms of positioning.

commented

Hey, BPBID author here; I'll fix the part of this bug that's on my end, specifically relating to enabling/disabling options in BPBID. Thanks @tflo for bringing it to my attention in MMOSimca/BattlePetBreedID#7.

BPBID should really detect if LibExtraTip and TSM is enabled and adjust accordingly.

I think the problem is that I handle 2 of these tooltip library interactions but not all 3. I'll try to replicate the same scenarios mentioned above and make sure it is handling all 3. Let me know if there's any specific changes I can make to help here.

They also really should mount under the TSM tooltip. πŸ’«

My reasoning at the time of that decision (which was admittedly like 10 years ago) was thus:

  • TSM is extremely popular
  • My addon is less popular than TSM
  • Other addons are probably more likely to mount under TSM than above it, therefore any solution I use where I mount above is it less likely to conflict

It's a tricky situation for sure and why I have contemplated using LibQTip myself. I'm not sure what end users would prefer in terms of positioning.

@MMOSimca

Yes unfortunately it's what I mentioned before. There is no unified library that everyone is using. So we are are the mercy at those addons that are more popular. I really do wish Ace3 would just make a library that would recycle and pump out External Tooltips. Then we wouldn't be in this mess as more than likely the major addon authors would be using it. This is especially true since it would auto reposition and sort all the tooltips for us without having to worry about priority. Instead here we are grabbing all these external tooltips and trying to figure out how to properly place everything.

TSM technique was to grab all the children of the tooltip and match parents. They continue to do this in a tree form. The issue with this process is that it can lead to priority scenarios based on the order in which the Addons are cycled through the client. They also added it on an OnUpdate routine so it's going to play musical chairs shuffle with any other addon attempting to do the same thing. Obviously it would be battling for the last slot. I put mine onShow so at least it would grab everything once and let other addons sort it out. 🀣

In terms of LibQTip, I'm not entirely sure if the smart positioning work with the other external tooltips. So you may run into the same scenario again. It would be one of those test, trial, and review scenarios when implementing it. Though I'm sure TSM would still being using their ExtraTip, Auctioneer LibExtraTip, and all the broker addons using LibQTip. πŸ’«