I would like to request the following changes:
In AceConfigRegistry-3.0.lua add the following table entry:
In AceConfigDialog-3.0.lua change the GroupSelected function to:
local function GroupSelected(widget, event, uniquevalue)
local user = widget:GetUserDataTable()
local options = user.options
local path = user.path
local feedpath = new()
for i = 1, #path do
feedpath[i] = path[i]
if user.option.onSelect then
GetOptionsMemberValue("onSelect", user.option, options, feedpath, user.appName)
AceConfigDialog:FeedGroup(user.appName, options, widget, user.rootframe, feedpath)
This would allow for a simpler method of detecting when a user has switched which sub-group they are in so I can update which options should be displayed efficiently. Otherwise I have to either use a "hidden" function that get evaluated every time an options is changed or my alternate solution. Currently I have placed a fake option in each tab with a "hidden" function that evaluates when there is a tab change and then triggers an OnUpdate script that updates which options should be seen and then has to FeedOptions the whole thing again.
Basically these changes would allow me to reduce a page of ugly hackish code into an eight-line function that drastically reduces processing time. I'm using these changes on my local copy and it makes a noticeable difference. Imagine two tabs, one with all spells, talents, and a bunch of items, and another with filters to select which of those are shown. The list of spells, talents, and items only needs to be updated once when switching from the filter tab to the list tab.
If this request is denied then at least remove this bit from the current version of GroupSelected:
local group = options
for i = 1, #feedpath do
group = GetSubOption(group, feedpath[i])
The variable "group" is not used so that loop is not needed.