Not sure if this will help you are not, the new color picker is acutally well made (in my opinion). I am leaving a small code snippet from my addon so anyone else can use it to use the new color picker. It's all contained in one function call now, and there is no callback.
Lua Code:
ColorPickerFrame:SetupColorPickerAndShow({
r = colors.red,
g = colors.green,
b = colors.blue,
opacity = colors.alpha,
hasOpacity = true,
swatchFunc = function()
colors.red, colors.green, colors.blue = ColorPickerFrame:GetColorRGB()
colors.alpha = ColorPickerFrame:GetColorAlpha()
L.AttachedFrame.ScrollFrame.listView:Refresh()
end,
cancelFunc = function()
colors.red, colors.green, colors.blue, colors.alpha =
ColorPickerFrame.previousValues.r, ColorPickerFrame.previousValues.g,
ColorPickerFrame.previousValues.b, ColorPickerFrame.previousValues.a
L.AttachedFrame.ScrollFrame.listView:Refresh()
end
})
An alternative way (this is more how Blizzard did this)
Lua Code:
local info = {}
info.r, info.g, info.b = colors.red, colors.green, colors.blue
info.opacity = colors.alpha
info.hasOpacity = true
info.swatchFunc = function()
colors.red, colors.green, colors.blue = ColorPickerFrame:GetColorRGB()
colors.alpha = ColorPickerFrame:GetColorAlpha()
L.AttachedFrame.ScrollFrame.listView:Refresh()
end
info.cancelFunc = function()
colors.red, colors.green, colors.blue, colors.alpha =
ColorPickerFrame.previousValues.r, ColorPickerFrame.previousValues.g,
ColorPickerFrame.previousValues.b, ColorPickerFrame.previousValues.a
L.AttachedFrame.ScrollFrame.listView:Refresh()
end
ColorPickerFrame:SetupColorPickerAndShow(info)
Also one thing to note, the new window is moveable and it remembers where it was. It also has hex code for colors