You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1022 B
42 lines
1022 B
if not WeakAuras.IsCorrectVersion() then return end
|
|
|
|
local Type, Version = "WeakAurasSortedDropdown", 1
|
|
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
|
|
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
|
|
|
|
local function Constructor()
|
|
local DropDownConstructor = AceGUI.WidgetRegistry["Dropdown"];
|
|
if (not DropDownConstructor) then
|
|
return nil;
|
|
end
|
|
local widget = DropDownConstructor();
|
|
if (not widget) then
|
|
return nil;
|
|
end
|
|
|
|
local oldSetList = widget.SetList
|
|
widget.SetList = function(self, list, _, itemType)
|
|
local orderTable = {};
|
|
for k, v in pairs(list) do
|
|
tinsert(orderTable, { key = k, value = v });
|
|
end
|
|
|
|
local order = {};
|
|
|
|
table.sort(orderTable, function(a, b)
|
|
return a.value < b.value;
|
|
end);
|
|
|
|
for i, item in ipairs(orderTable) do
|
|
order[i] = item.key;
|
|
end
|
|
|
|
oldSetList(self, list, order, itemType)
|
|
end
|
|
|
|
widget.type = Type;
|
|
|
|
return widget;
|
|
end
|
|
|
|
AceGUI:RegisterWidgetType(Type, Constructor, Version)
|
|
|