tukui-org / ElvUI

User Interface replacement AddOn for World of Warcraft.
https://tukui.org
Other
398 stars 137 forks source link

Ace3 skinning: SimpleGroup should have no graphics (no frame template set and no backdrop/border or color) #1098

Closed r4cken closed 7 months ago

r4cken commented 7 months ago

What is the issue you are having?

While building my own addon using AceGUI i noticed that certain widgets were created with extra borders and backdrops when the library documentation and widget descriptions mentioned no such things. After experimenting i figured out that ElvUI has skinning options for Ace3 and disabling this skin completely resolved the issue. Suddenly the frames had their expected look and feel. I have attached pictures of how the addon looks like with ElvUI Ace3 skinning enabled and disabled

elvui skinning enabled Here a SimpleGroup is acting as a wrapper container for two InlineGroups "Raids" and "Dungeons" and the SimpleGroup has an unwanted backdrop and border. This is also true for the SimpleGroup that wraps the list of currencies in the bottom of the picture.

elvui skinning disabled Without ElvUI skinning it looks just as expected with no extra backdrops and borders.

What is the expected behaviour?

According to the AceGUI implementation of SimpleGroup (found at https://github.com/WoWUIDev/Ace3/blob/master/AceGUI-3.0/widgets/AceGUIContainer-SimpleGroup.lua) it is clearly seen that this widget type has no backdrop, borders or templates attached. It is simply ment to be a widget with no graphics. This is also clearly stated in the description of the widget (found at https://www.wowace.com/projects/ace3/pages/ace-gui-3-0-widgets) where it says that SimpleGroup is "An empty group with no title or graphics."

What actually happened?

Having Ace3 skinning enabled in ElvUI alters the behaviour of SimpleGroup. By looking at the git history for this file https://github.com/tukui-org/ElvUI/blame/development/ElvUI/Core/Modules/Skins/Ace3.lua#L442 and looking at lines 442-444 we can see that the code responsible for skinning SimpleGroup is applying a template and it also alters backdrop colors for this widget, which causes this bug.

I have also noticed that lines 446-448 causes flickering when resizing a parent container that uses SimpleGroup children. It looks like this commit https://github.com/tukui-org/ElvUI/commit/f76d8799cf9201dfa803b47f1bf01403b1b5dc0b added padding and reattached the anchors of the widget to allow dropdowns to have more space. Unless im missing some domain knowledge about why this was done or why it's in there, this fix might not be needed at all.

If there is no UI pixel space taken up by a backdrop and border, there shouldn't be a need to reanchor the widget in the first place.

Suggested Solution/Workaround

Remove code in the skinning module for Ace3 regarding SimpleGroup, pertaining to setting a template and backdrop/border

I believe this can/should be done as it is supposed to be a grouping widget that holds other widgets, and thus have no graphics of its own. I have tested locally by removing lines 442-444 and this completely resolved my issue and made my addon look like the picture below. Commenting out the entire block of code resolved both my issues completely, issue two being the flickering and anchoring offset problems.

elvui skinning enabled fix

kodewdle commented 7 months ago

done, thanks for describing the problem so clearly. 🌼 i may change it in the future but i don't even remember exactly why that one had a backdrop in the first place but i don't think we even use it anymore (simple groups i mean). 🐿️

r4cken commented 7 months ago

done, thanks for describing the problem so clearly. 🌼 i may change it in the future but i don't even remember exactly why that one had a backdrop in the first place but i don't think we even use it anymore (simple groups i mean). 🐿️

Thank you Kodewdle for looking into this so quickly after i posted about my issue. I've been there before, not remembering exactly why something was implemented a certain way 😄. Having this fixed will make my addon look so much better. I wouldnt be able to ship it with an AceGUI without it to be honest. And since a majority of the users these days are on ElvUI they would make endless complains about the "broken" layout.

I already know of one other addon "Bis-Tooltip" that will now have well behaved dropdowns and other layout components because the children anchor properly inside the SimpleGroups and they no longer have borders and backdrops!