Quantcast

- Ticket #47 : Allow all built-ins to be on right side...

urnati [11-01-21 - 22:37]
- Ticket #47 : Allow all built-ins to be on right side...
- Ticket #48 : Change to performance to have tooltip allows include info even if user turned off.
- Updates to Titan and LibUIDropdown to fix backdrop API change (Removal of backdrop template from GasmeTooltip)
- Update Ace 3 from Titan Burnong Crusades Classic
Filename
TitanClassic/LDBToTitanClassic.lua
TitanClassic/TitanClassic.toc
TitanClassic/TitanClassicUtils.lua
TitanClassic/TitanPanelClassicTemplate.lua
TitanClassic/libs/!LibUIDropDownMenu/LibUIDropDownMenu/LibUIDropDownMenu.lua
TitanClassic/libs/AceGUI-3.0/AceGUI-3.0.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua
TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
TitanClassicAmmo/TitanClassicAmmo.lua
TitanClassicAmmo/TitanClassicAmmo.toc
TitanClassicBag/TitanClassicBag.lua
TitanClassicBag/TitanClassicBag.toc
TitanClassicClock/TitanClassicClock.lua
TitanClassicClock/TitanClassicClock.toc
TitanClassicGold/TitanClassicGold.lua
TitanClassicGold/TitanClassicGold.toc
TitanClassicLocation/TitanClassicLocation.lua
TitanClassicLocation/TitanClassicLocation.toc
TitanClassicLootType/TitanClassicLootType.lua
TitanClassicLootType/TitanClassicLootType.toc
TitanClassicPerformance/TitanClassicPerformance.lua
TitanClassicPerformance/TitanClassicPerformance.toc
TitanClassicRegen/TitanClassicRegen.lua
TitanClassicRegen/TitanClassicRegen.toc
TitanClassicRepair/TitanClassicRepair.lua
TitanClassicRepair/TitanClassicRepair.toc
TitanClassicVolume/TitanClassicVolume.lua
TitanClassicVolume/TitanClassicVolume.toc
TitanClassicXP/TitanClassicXP.lua
TitanClassicXP/TitanClassicXP.toc
diff --git a/TitanClassic/LDBToTitanClassic.lua b/TitanClassic/LDBToTitanClassic.lua
index df164ab..2219327 100644
--- a/TitanClassic/LDBToTitanClassic.lua
+++ b/TitanClassic/LDBToTitanClassic.lua
@@ -115,14 +115,30 @@ VAR: frame
 --]]
 function LDBToTitan:TitanLDBSetOwnerPosition(parent, anchorPoint, relativeToFrame, relativePoint, xOffset, yOffset, frame)
 	if frame:GetName() == "GameTooltip" then
+		-- Changes for 9.1.5. The background template was removed from the GameTooltip
+		local tip_name = frame:GetName()
+
+		local tip_back_name = tip_name.."Backdrop"
+		local tip_back_frame = _G[tip_back_name] or CreateFrame("Frame", tip_back_name, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+		tip_back_frame:SetFrameLevel(frame:GetFrameLevel() - 1) -- By creating this after the parent, need to set it behind the parent
+
+		tip_back_frame:SetAllPoints()
+		tip_back_frame:SetBackdrop(back_drop_info)
+		-- set alpha (transparency) for the Game Tooltip
+		local tool_trans = TitanPanelGetVar("TooltipTrans")
+		tip_back_frame:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g, TOOLTIP_DEFAULT_COLOR.b, tool_trans)
+		tip_back_frame:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b, tool_trans)
+		frame.MenuBackdrop = tip_back_frame
+
 		frame:SetOwner(parent, "ANCHOR_NONE");
+--[[
 		-- set alpha (transparency) for the Game Tooltip
 		local red, green, blue = GameTooltip:GetBackdropColor();
 		local red2, green2, blue2 = GameTooltip:GetBackdropBorderColor();
 		frame:SetBackdropColor(red,green,blue,TitanPanelGetVar("TooltipTrans"));
 		frame:SetBackdropBorderColor(red2,green2,blue2,
 			TitanPanelGetVar("TooltipTrans"));
-
+--]]
 		-- set font size for the Game Tooltip
 		if not TitanPanelGetVar("DisableTooltipFont") then
 			if TitanTooltipScaleSet < 1 then
@@ -515,8 +531,9 @@ function TitanLDBRefreshButton()
 --	TitanDebug("LDB: RefreshButton")
 	for name, obj in ldb:DataObjectIterator() do
 		if obj then
-			LDBToTitan:TitanLDBTextUpdate(_, name, "text", (obj.text or ""), obj)
-			LDBToTitan:TitanLDBIconUpdate(_, name, "icon", (obj.icon or iconTitanDefault), obj)
+			local unused = nil
+			LDBToTitan:TitanLDBTextUpdate(unused, name, "text", (obj.text or ""), obj)
+			LDBToTitan:TitanLDBIconUpdate(unused, name, "icon", (obj.icon or iconTitanDefault), obj)
 		else
 --	TitanDebug("LDB: '"..name.."' no refresh")
 		end
diff --git a/TitanClassic/TitanClassic.toc b/TitanClassic/TitanClassic.toc
index f8d4035..4de31fd 100644
--- a/TitanClassic/TitanClassic.toc
+++ b/TitanClassic/TitanClassic.toc
@@ -1,7 +1,7 @@
-## Interface: 11307
-## Title: Titan Panel Classic |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic |cff00aa001.2.8.11306|r
 ## Author: Titan Panel Development Team
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## SavedVariables: TitanAll, TitanSettings, TitanSkins, ServerTimeOffsets, ServerHourFormat
 ## OptionalDeps: Ace3, AceGUI-3.0-SharedMediaWidgets, LibSharedMedia-3.0, LibQTip-1.0, !LibUIDropDownMenu
 ## Notes: Adds a display bar on the top and/or bottom of the screen. Allows users to show and control information/launcher plugins.
diff --git a/TitanClassic/TitanClassicUtils.lua b/TitanClassic/TitanClassicUtils.lua
index aedc9f8..06ff9c6 100644
--- a/TitanClassic/TitanClassicUtils.lua
+++ b/TitanClassic/TitanClassicUtils.lua
@@ -811,6 +811,29 @@ function TitanPanelRightClickMenu_AddToggleColoredText(id, level)
 end

 --[[ API
+NAME: TitanPanelRightClickMenu_AddToggleRightSide
+DESC: Menu - add a toggle Right Side (localized) command at the given level in the form of a button. Titan will properly control the "DisplayOnRightSide"
+VAR: id - id of the plugin
+VAR: level - level to put the line
+OUT:  None
+--]]
+function TitanPanelRightClickMenu_AddToggleRightSide(id, level)
+	-- copy of TitanPanelRightClickMenu_AddToggleVar adding a remove button
+	local info = {};
+	info.text = L["TITAN_CLOCK_MENU_DISPLAY_ON_RIGHT_SIDE"];
+	info.value = {id, "DisplayOnRightSide"};
+	info.func = function()
+		local bar = TitanUtils_GetWhichBar(id)
+		TitanPanelRightClickMenu_ToggleVar({id, "DisplayOnRightSide"})
+		TitanPanel_RemoveButton(id);
+		TitanUtils_AddButtonOnBar(bar, id)
+	end
+	info.checked = TitanGetVar(id, "DisplayOnRightSide");
+	info.keepShownOnClick = 1;
+	L_UIDropDownMenu_AddButton(info, level);
+end
+
+--[[ API
 NAME: TitanPanelRightClickMenu_AddHide
 DESC: Menu - add a Hide (localized) command at the given level in the form of a button. When clicked this will remove the plugin from the Titan bar.
 VAR: id - id of the plugin
diff --git a/TitanClassic/TitanPanelClassicTemplate.lua b/TitanClassic/TitanPanelClassicTemplate.lua
index 1be418e..b8e5f56 100644
--- a/TitanClassic/TitanPanelClassicTemplate.lua
+++ b/TitanClassic/TitanPanelClassicTemplate.lua
@@ -91,6 +91,21 @@ local function TitanTooltip_AddTooltipText(text)
 	end
 end

+local back_drop_info =
+	{
+		bgFile="Interface\\Tooltips\\UI-Tooltip-Background",
+		edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
+		tile = true,
+		insets = {
+			left = 6,
+			right = 6,
+			top = 3,
+			bottom = 3,
+		},
+		tileSize = 8,
+		edgeSize = 8,
+	}
+
 --[[ local
 NAME: TitanTooltip_SetOwnerPosition
 DESC: Set both the parent and the position of GameTooltip for the plugin tooltip.
@@ -107,15 +122,32 @@ local function TitanTooltip_SetOwnerPosition(parent, anchorPoint, relativeToFram
 	if not frame then
 		frame = _G["GameTooltip"]
 	end
+	-- Changes for 9.1.5. The background template was removed from the GameTooltip
+	local tip_name = frame:GetName()
+
+	local tip_back_name = tip_name.."Backdrop"
+	local tip_back_frame = _G[tip_back_name] or CreateFrame("Frame", tip_back_name, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	tip_back_frame:SetFrameLevel(frame:GetFrameLevel() - 1) -- By creating this after the parent, need to set it behind the parent
+
+	tip_back_frame:SetAllPoints()
+	tip_back_frame:SetBackdrop(back_drop_info)
+	-- set alpha (transparency) for the Game Tooltip
+	local tool_trans = TitanPanelGetVar("TooltipTrans")
+	tip_back_frame:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g, TOOLTIP_DEFAULT_COLOR.b, tool_trans)
+	tip_back_frame:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b, tool_trans)
+	frame.MenuBackdrop = tip_back_frame
+
 	frame:SetOwner(parent, "ANCHOR_NONE");
 	frame:SetPoint(anchorPoint, relativeToFrame, relativePoint,
 		xOffset, yOffset);
+--[[
 	-- set alpha (transparency) for the Game Tooltip
 	local red, green, blue = frame:GetBackdropColor();
 	local red2, green2, blue2 = frame:GetBackdropBorderColor();
 	local tool_trans = TitanPanelGetVar("TooltipTrans")
 	frame:SetBackdropColor(red,green,blue,tool_trans);
 	frame:SetBackdropBorderColor(red2,green2,blue2,tool_trans);
+--]]
 	-- set font size for the Game Tooltip
 	if not TitanPanelGetVar("DisableTooltipFont") then
 		if TitanTooltipScaleSet < 1 then
@@ -463,41 +495,6 @@ local function TitanPanelButton_OnDragStop(self, ChildButton)
 	end
 end

---[[ local
-NAME: TitanTooltip_SetOwnerPosition
-DESC: Set both the parent and the position of GameTooltip for the plugin tooltip.
-VAR: parent - reference to the frame to attach the tooltip to
-VAR: anchorPoint - tooltip anchor location (side or corner) to use
-VAR: relativeToFrame - string name name of the frame, usually the plugin), to attach the tooltip to
-VAR: relativePoint - parent anchor location (side or corner) to use
-VAR: xOffset - X offset from the anchor point
-VAR: yOffset - Y offset from the anchor point
-VAR: frame - reference to the tooltip
-OUT:  None
---]]
-local function TitanTooltip_SetOwnerPosition(parent, anchorPoint, relativeToFrame, relativePoint, xOffset, yOffset, frame)
-	if not frame then
-		frame = _G["GameTooltip"]
-	end
-	frame:SetOwner(parent, "ANCHOR_NONE");
-	frame:SetPoint(anchorPoint, relativeToFrame, relativePoint,
-		xOffset, yOffset);
-	-- set alpha (transparency) for the Game Tooltip
-	local red, green, blue = frame:GetBackdropColor();
-	local red2, green2, blue2 = frame:GetBackdropBorderColor();
-	local tool_trans = TitanPanelGetVar("TooltipTrans")
-	frame:SetBackdropColor(red,green,blue,tool_trans);
-	frame:SetBackdropBorderColor(red2,green2,blue2,tool_trans);
-	-- set font size for the Game Tooltip
-	if not TitanPanelGetVar("DisableTooltipFont") then
-		if TitanTooltipScaleSet < 1 then
-		TitanTooltipOrigScale = frame:GetScale();
-		TitanTooltipScaleSet = TitanTooltipScaleSet + 1;
-		end
-		frame:SetScale(TitanPanelGetVar("TooltipFont"));
-	end
-end
-
 --[[ API
 NAME: TitanOptionSlider_TooltipText
 DESC: Set the color of the tooltip text to normal (white) with the value in green.
diff --git a/TitanClassic/libs/!LibUIDropDownMenu/LibUIDropDownMenu/LibUIDropDownMenu.lua b/TitanClassic/libs/!LibUIDropDownMenu/LibUIDropDownMenu/LibUIDropDownMenu.lua
index 37ecff3..035c2f1 100755
--- a/TitanClassic/libs/!LibUIDropDownMenu/LibUIDropDownMenu/LibUIDropDownMenu.lua
+++ b/TitanClassic/libs/!LibUIDropDownMenu/LibUIDropDownMenu/LibUIDropDownMenu.lua
@@ -218,9 +218,9 @@ local function creatre_UIDropDownList(name, parent)
 	f:SetFrameStrata("DIALOG")
 	f:EnableMouse(true)

-	f.Backdrop = _G[name.."Backdrop"] or CreateFrame("Frame", name.."Backdrop", f)
-	f.Backdrop:SetAllPoints()
-	f.Backdrop:SetBackdrop({
+	local fdb = _G[name.."Backdrop"] or CreateFrame("Frame", name.."Backdrop", f, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	fdb:SetAllPoints()
+	fdb:SetBackdrop({
 		bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background-Dark",
 		edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border",
 		tile = true,
@@ -228,10 +228,11 @@ local function creatre_UIDropDownList(name, parent)
 		edgeSize = 32,
 		insets = { left = 11, right = 12, top = 12, bottom = 9, },
 	})
+	f.Border = fdb

-	f.MenuBackdrop= _G[name.."MenuBackdrop"] or CreateFrame("Frame", name.."MenuBackdrop", f)
-	f.MenuBackdrop:SetAllPoints()
-	f.MenuBackdrop:SetBackdrop({
+	local fmb = _G[name.."MenuBackdrop"] or CreateFrame("Frame", name.."MenuBackdrop", f, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	fmb:SetAllPoints()
+	fmb:SetBackdrop({
 		bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
 		edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
 		tile = true,
@@ -239,8 +240,9 @@ local function creatre_UIDropDownList(name, parent)
 		edgeSize = 16,
 		insets = { left = 5, right = 4, top = 4, bottom = 4, },
 	})
-	f.MenuBackdrop:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g, TOOLTIP_DEFAULT_COLOR.b)
-	f.MenuBackdrop:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b)
+	fmb:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g, TOOLTIP_DEFAULT_COLOR.b)
+	fmb:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b)
+	f.MenuBackdrop = fmb

 	f.Button1 = _G[name.."Button1"] or create_UIDropDownMenuButton(name.."Button1", f)
 	f.Button1:SetID(1)
diff --git a/TitanClassic/libs/AceGUI-3.0/AceGUI-3.0.lua b/TitanClassic/libs/AceGUI-3.0/AceGUI-3.0.lua
index fcc4e94..3c376c7 100755
--- a/TitanClassic/libs/AceGUI-3.0/AceGUI-3.0.lua
+++ b/TitanClassic/libs/AceGUI-3.0/AceGUI-3.0.lua
@@ -1,6 +1,6 @@
 --- **AceGUI-3.0** provides access to numerous widgets which can be used to create GUIs.
 -- AceGUI is used by AceConfigDialog to create the option GUIs, but you can use it by itself
--- to create any custom GUI. There are more extensive examples in the test suite in the Ace3
+-- to create any custom GUI. There are more extensive examples in the test suite in the Ace3
 -- stand-alone distribution.
 --
 -- **Note**: When using AceGUI-3.0 directly, please do not modify the frames of the widgets directly,
@@ -24,17 +24,17 @@
 -- f:AddChild(btn)
 -- @class file
 -- @name AceGUI-3.0
--- @release $Id: AceGUI-3.0.lua 1177 2018-06-25 12:12:48Z nevcairiel $
-local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 36
+-- @release $Id: AceGUI-3.0.lua 1247 2021-01-23 23:16:39Z funkehdude $
+local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 41
 local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR)

 if not AceGUI then return end -- No upgrade needed

 -- Lua APIs
-local tconcat, tremove, tinsert = table.concat, table.remove, table.insert
+local tinsert, wipe = table.insert, table.wipe
 local select, pairs, next, type = select, pairs, next, type
-local error, assert, loadstring = error, assert, loadstring
-local setmetatable, rawget, rawset = setmetatable, rawget, rawset
+local error, assert = error, assert
+local setmetatable, rawget = setmetatable, rawget
 local math_max = math.max

 -- WoW APIs
@@ -51,7 +51,8 @@ AceGUI.LayoutRegistry = AceGUI.LayoutRegistry or {}
 AceGUI.WidgetBase = AceGUI.WidgetBase or {}
 AceGUI.WidgetContainerBase = AceGUI.WidgetContainerBase or {}
 AceGUI.WidgetVersions = AceGUI.WidgetVersions or {}
-
+AceGUI.tooltip = AceGUI.tooltip or CreateFrame("GameTooltip", "AceGUITooltip", UIParent, "GameTooltipTemplate")
+
 -- local upvalues
 local WidgetRegistry = AceGUI.WidgetRegistry
 local LayoutRegistry = AceGUI.LayoutRegistry
@@ -66,39 +67,10 @@ local function errorhandler(err)
 	return geterrorhandler()(err)
 end

-local function CreateDispatcher(argCount)
-	local code = [[
-		local xpcall, eh = ...
-		local method, ARGS
-		local function call() return method(ARGS) end
-
-		local function dispatch(func, ...)
-			method = func
-			if not method then return end
-			ARGS = ...
-			return xpcall(call, eh)
-		end
-
-		return dispatch
-	]]
-
-	local ARGS = {}
-	for i = 1, argCount do ARGS[i] = "arg"..i end
-	code = code:gsub("ARGS", tconcat(ARGS, ", "))
-	return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler)
-end
-
-local Dispatchers = setmetatable({}, {__index=function(self, argCount)
-	local dispatcher = CreateDispatcher(argCount)
-	rawset(self, argCount, dispatcher)
-	return dispatcher
-end})
-Dispatchers[0] = function(func)
-	return xpcall(func, errorhandler)
-end
-
 local function safecall(func, ...)
-	return Dispatchers[select("#", ...)](func, ...)
+	if func then
+		return xpcall(func, errorhandler, ...)
+	end
 end

 -- Recycling functions
@@ -108,7 +80,7 @@ do
 	-- Internal Storage of the objects changed, from an array table
 	-- to a hash table, and additionally we introduced versioning on
 	-- the widgets which would discard all widgets from a pre-29 version
-	-- anyway, so we just clear the storage now, and don't try to
+	-- anyway, so we just clear the storage now, and don't try to
 	-- convert the storage tables to the new format.
 	-- This should generally not cause *many* widgets to end up in trash,
 	-- since once dialogs are opened, all addons should be loaded already
@@ -118,7 +90,7 @@ do
 	if oldminor and oldminor < 29 and AceGUI.objPools then
 		AceGUI.objPools = nil
 	end
-
+
 	AceGUI.objPools = AceGUI.objPools or {}
 	local objPools = AceGUI.objPools
 	--Returns a new instance, if none are available either returns a new table or calls the given contructor
@@ -126,11 +98,11 @@ do
 		if not WidgetRegistry[type] then
 			error("Attempt to instantiate unknown widget type", 2)
 		end
-
+
 		if not objPools[type] then
 			objPools[type] = {}
 		end
-
+
 		local newObj = next(objPools[type])
 		if not newObj then
 			newObj = WidgetRegistry[type]()
@@ -180,12 +152,12 @@ function AceGUI:Create(type)
 			widget.OnAcquire = widget.Aquire
 			widget.Aquire = nil
 		end
-
+
 		if rawget(widget, "Release") then
-			widget.OnRelease = rawget(widget, "Release")
+			widget.OnRelease = rawget(widget, "Release")
 			widget.Release = nil
 		end
-
+
 		if widget.OnAcquire then
 			widget:OnAcquire()
 		else
@@ -204,7 +176,10 @@ end
 -- If this widget is a Container-Widget, all of its Child-Widgets will be releases as well.
 -- @param widget The widget to release
 function AceGUI:Release(widget)
+	if widget.isQueuedForRelease then return end
+	widget.isQueuedForRelease = true
 	safecall(widget.PauseLayout, widget)
+	widget.frame:Hide()
 	widget:Fire("OnRelease")
 	safecall(widget.ReleaseChildren, widget)

@@ -233,9 +208,26 @@ function AceGUI:Release(widget)
 		widget.content.width = nil
 		widget.content.height = nil
 	end
+	widget.isQueuedForRelease = nil
 	delWidget(widget, widget.type)
 end

+--- Check if a widget is currently in the process of being released
+-- This function check if this widget, or any of its parents (in which case it'll be released shortly as well)
+-- are currently being released. This allows addon to handle any callbacks accordingly.
+-- @param widget The widget to check
+function AceGUI:IsReleasing(widget)
+	if widget.isQueuedForRelease then
+		return true
+	end
+
+	if widget.parent and widget.parent.AceGUIWidgetVersion then
+		return AceGUI:IsReleasing(widget.parent)
+	end
+
+	return false
+end
+
 -----------
 -- Focus --
 -----------
@@ -267,18 +259,18 @@ end
 --[[
 	Widgets must provide the following functions
 		OnAcquire() - Called when the object is acquired, should set everything to a default hidden state
-
+
 	And the following members
 		frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes
 		type - the type of the object, same as the name given to :RegisterWidget()
-
+
 	Widgets contain a table called userdata, this is a safe place to store data associated with the wigdet
 	It will be cleared automatically when a widget is released
 	Placing values directly into a widget object should be avoided
-
+
 	If the Widget can act as a container for other Widgets the following
 		content - frame or derivitive that children will be anchored to
-
+
 	The Widget can supply the following Optional Members
 		:OnRelease() - Called when the object is Released, should remove any additional anchors and clear any data
 		:OnWidthSet(width) - Called when the width of the widget is changed
@@ -294,21 +286,21 @@ end
 -- Widget Base Template --
 --------------------------
 do
-	local WidgetBase = AceGUI.WidgetBase
-
+	local WidgetBase = AceGUI.WidgetBase
+
 	WidgetBase.SetParent = function(self, parent)
 		local frame = self.frame
 		frame:SetParent(nil)
 		frame:SetParent(parent.content)
 		self.parent = parent
 	end
-
+
 	WidgetBase.SetCallback = function(self, name, func)
 		if type(func) == "function" then
 			self.events[name] = func
 		end
 	end
-
+
 	WidgetBase.Fire = function(self, name, ...)
 		if self.events[name] then
 			local success, ret = safecall(self.events[name], self, name, ...)
@@ -317,7 +309,7 @@ do
 			end
 		end
 	end
-
+
 	WidgetBase.SetWidth = function(self, width)
 		self.frame:SetWidth(width)
 		self.frame.width = width
@@ -325,7 +317,7 @@ do
 			self:OnWidthSet(width)
 		end
 	end
-
+
 	WidgetBase.SetRelativeWidth = function(self, width)
 		if width <= 0 or width > 1 then
 			error(":SetRelativeWidth(width): Invalid relative width.", 2)
@@ -333,7 +325,7 @@ do
 		self.relWidth = width
 		self.width = "relative"
 	end
-
+
 	WidgetBase.SetHeight = function(self, height)
 		self.frame:SetHeight(height)
 		self.frame.height = height
@@ -341,7 +333,7 @@ do
 			self:OnHeightSet(height)
 		end
 	end
-
+
 	--[[ WidgetBase.SetRelativeHeight = function(self, height)
 		if height <= 0 or height > 1 then
 			error(":SetRelativeHeight(height): Invalid relative height.", 2)
@@ -353,47 +345,51 @@ do
 	WidgetBase.IsVisible = function(self)
 		return self.frame:IsVisible()
 	end
-
+
 	WidgetBase.IsShown= function(self)
 		return self.frame:IsShown()
 	end
-
+
 	WidgetBase.Release = function(self)
 		AceGUI:Release(self)
 	end
-
+
+	WidgetBase.IsReleasing = function(self)
+		return AceGUI:IsReleasing(self)
+	end
+
 	WidgetBase.SetPoint = function(self, ...)
 		return self.frame:SetPoint(...)
 	end
-
+
 	WidgetBase.ClearAllPoints = function(self)
 		return self.frame:ClearAllPoints()
 	end
-
+
 	WidgetBase.GetNumPoints = function(self)
 		return self.frame:GetNumPoints()
 	end
-
+
 	WidgetBase.GetPoint = function(self, ...)
 		return self.frame:GetPoint(...)
-	end
-
+	end
+
 	WidgetBase.GetUserDataTable = function(self)
 		return self.userdata
 	end
-
+
 	WidgetBase.SetUserData = function(self, key, value)
 		self.userdata[key] = value
 	end
-
+
 	WidgetBase.GetUserData = function(self, key)
 		return self.userdata[key]
 	end
-
+
 	WidgetBase.IsFullHeight = function(self)
 		return self.height == "fill"
 	end
-
+
 	WidgetBase.SetFullHeight = function(self, isFull)
 		if isFull then
 			self.height = "fill"
@@ -401,11 +397,11 @@ do
 			self.height = nil
 		end
 	end
-
+
 	WidgetBase.IsFullWidth = function(self)
 		return self.width == "fill"
 	end
-
+
 	WidgetBase.SetFullWidth = function(self, isFull)
 		if isFull then
 			self.width = "fill"
@@ -413,29 +409,29 @@ do
 			self.width = nil
 		end
 	end
-
+
 --	local function LayoutOnUpdate(this)
 --		this:SetScript("OnUpdate",nil)
 --		this.obj:PerformLayout()
 --	end
-
+
 	local WidgetContainerBase = AceGUI.WidgetContainerBase
-
+
 	WidgetContainerBase.PauseLayout = function(self)
 		self.LayoutPaused = true
 	end
-
+
 	WidgetContainerBase.ResumeLayout = function(self)
 		self.LayoutPaused = nil
 	end
-
+
 	WidgetContainerBase.PerformLayout = function(self)
 		if self.LayoutPaused then
 			return
 		end
 		safecall(self.LayoutFunc, self.content, self.children)
 	end
-
+
 	--call this function to layout, makes sure layed out objects get a frame to get sizes etc
 	WidgetContainerBase.DoLayout = function(self)
 		self:PerformLayout()
@@ -443,7 +439,7 @@ do
 --			self.frame:SetScript("OnUpdate", LayoutOnUpdate)
 --		end
 	end
-
+
 	WidgetContainerBase.AddChild = function(self, child, beforeWidget)
 		if beforeWidget then
 			local siblingIndex = 1
@@ -451,7 +447,7 @@ do
 				if widget == beforeWidget then
 					break
 				end
-				siblingIndex = siblingIndex + 1
+				siblingIndex = siblingIndex + 1
 			end
 			tinsert(self.children, siblingIndex, child)
 		else
@@ -461,7 +457,7 @@ do
 		child.frame:Show()
 		self:DoLayout()
 	end
-
+
 	WidgetContainerBase.AddChildren = function(self, ...)
 		for i = 1, select("#", ...) do
 			local child = select(i, ...)
@@ -471,7 +467,7 @@ do
 		end
 		self:DoLayout()
 	end
-
+
 	WidgetContainerBase.ReleaseChildren = function(self)
 		local children = self.children
 		for i = 1,#children do
@@ -479,7 +475,7 @@ do
 			children[i] = nil
 		end
 	end
-
+
 	WidgetContainerBase.SetLayout = function(self, Layout)
 		self.LayoutFunc = AceGUI:GetLayout(Layout)
 	end
@@ -503,7 +499,7 @@ do
 			end
 		end
 	end
-
+
 	local function ContentResize(this)
 		if this:GetWidth() and this:GetHeight() then
 			this.width = this:GetWidth()
@@ -515,7 +511,7 @@ do
 	setmetatable(WidgetContainerBase, {__index=WidgetBase})

 	--One of these function should be called on each Widget Instance as part of its creation process
-
+
 	--- Register a widget-class as a container for newly created widgets.
 	-- @param widget The widget class
 	function AceGUI:RegisterAsContainer(widget)
@@ -531,7 +527,7 @@ do
 		widget:SetLayout("List")
 		return widget
 	end
-
+
 	--- Register a widget-class as a widget.
 	-- @param widget The widget class
 	function AceGUI:RegisterAsWidget(widget)
@@ -558,11 +554,11 @@ end
 -- @param Version The version of the widget
 function AceGUI:RegisterWidgetType(Name, Constructor, Version)
 	assert(type(Constructor) == "function")
-	assert(type(Version) == "number")
-
+	assert(type(Version) == "number")
+
 	local oldVersion = WidgetVersions[Name]
 	if oldVersion and oldVersion >= Version then return end
-
+
 	WidgetVersions[Name] = Version
 	WidgetRegistry[Name] = Constructor
 end
@@ -631,7 +627,7 @@ AceGUI:RegisterLayout("List",
 		local width = content.width or content:GetWidth() or 0
 		for i = 1, #children do
 			local child = children[i]
-
+
 			local frame = child.frame
 			frame:ClearAllPoints()
 			frame:Show()
@@ -640,22 +636,22 @@ AceGUI:RegisterLayout("List",
 			else
 				frame:SetPoint("TOPLEFT", children[i-1].frame, "BOTTOMLEFT")
 			end
-
+
 			if child.width == "fill" then
 				child:SetWidth(width)
 				frame:SetPoint("RIGHT", content)
-
+
 				if child.DoLayout then
 					child:DoLayout()
 				end
 			elseif child.width == "relative" then
 				child:SetWidth(width * child.relWidth)
-
+
 				if child.DoLayout then
 					child:DoLayout()
 				end
 			end
-
+
 			height = height + (frame.height or frame:GetHeight() or 0)
 		end
 		safecall(content.obj.LayoutFinished, content.obj, nil, height)
@@ -667,6 +663,7 @@ AceGUI:RegisterLayout("Fill",
 		if children[1] then
 			children[1]:SetWidth(content:GetWidth() or 0)
 			children[1]:SetHeight(content:GetHeight() or 0)
+			children[1].frame:ClearAllPoints()
 			children[1].frame:SetAllPoints(content)
 			children[1].frame:Show()
 			safecall(content.obj.LayoutFinished, content.obj, nil, children[1].frame:GetHeight())
@@ -690,19 +687,17 @@ AceGUI:RegisterLayout("Flow",
 		--height of the current row
 		local rowheight = 0
 		local rowoffset = 0
-		local lastrowoffset
-
+
 		local width = content.width or content:GetWidth() or 0
-
+
 		--control at the start of the row
 		local rowstart
 		local rowstartoffset
-		local lastrowstart
 		local isfullheight
-
+
 		local frameoffset
 		local lastframeoffset
-		local oversize
+		local oversize
 		for i = 1, #children do
 			local child = children[i]
 			oversize = nil
@@ -710,17 +705,17 @@ AceGUI:RegisterLayout("Flow",
 			local frameheight = frame.height or frame:GetHeight() or 0
 			local framewidth = frame.width or frame:GetWidth() or 0
 			lastframeoffset = frameoffset
-			-- HACK: Why did we set a frameoffset of (frameheight / 2) ?
+			-- HACK: Why did we set a frameoffset of (frameheight / 2) ?
 			-- That was moving all widgets half the widgets size down, is that intended?
 			-- Actually, it seems to be neccessary for many cases, we'll leave it in for now.
 			-- If widgets seem to anchor weirdly with this, provide a valid alignoffset for them.
 			-- TODO: Investigate moar!
 			frameoffset = child.alignoffset or (frameheight / 2)
-
+
 			if child.width == "relative" then
 				framewidth = width * child.relWidth
 			end
-
+
 			frame:Show()
 			frame:ClearAllPoints()
 			if i == 1 then
@@ -759,11 +754,11 @@ AceGUI:RegisterLayout("Flow",
 				else
 					--handles cases where the new height is higher than either control because of the offsets
 					--math.max(rowheight-rowoffset+frameoffset, frameheight-frameoffset+rowoffset)
-
+
 					--offset is always the larger of the two offsets
 					rowoffset = math_max(rowoffset, frameoffset)
 					rowheight = math_max(rowheight, rowoffset + (frameheight / 2))
-
+
 					frame:SetPoint("TOPLEFT", children[i-1].frame, "TOPRIGHT", 0, frameoffset - lastframeoffset)
 					usedwidth = framewidth + usedwidth
 				end
@@ -772,11 +767,11 @@ AceGUI:RegisterLayout("Flow",
 			if child.width == "fill" then
 				safelayoutcall(child, "SetWidth", width)
 				frame:SetPoint("RIGHT", content)
-
+
 				usedwidth = 0
 				rowstart = frame
 				rowstartoffset = frameoffset
-
+
 				if child.DoLayout then
 					child:DoLayout()
 				end
@@ -785,7 +780,7 @@ AceGUI:RegisterLayout("Flow",
 				rowstartoffset = rowoffset
 			elseif child.width == "relative" then
 				safelayoutcall(child, "SetWidth", width * child.relWidth)
-
+
 				if child.DoLayout then
 					child:DoLayout()
 				end
@@ -794,20 +789,20 @@ AceGUI:RegisterLayout("Flow",
 					frame:SetPoint("RIGHT", content)
 				end
 			end
-
+
 			if child.height == "fill" then
 				frame:SetPoint("BOTTOM", content)
 				isfullheight = true
 			end
 		end
-
+
 		--anchor the last row, if its full height needs a special case since  its height has just been changed by the anchor
 		if isfullheight then
 			rowstart:SetPoint("TOPLEFT", content, "TOPLEFT", 0, -height)
 		elseif rowstart then
 			rowstart:SetPoint("TOPLEFT", content, "TOPLEFT", 0, -(height + (rowoffset - rowstartoffset) + 3))
 		end
-
+
 		height = height + rowheight + 3
 		safecall(content.obj.LayoutFinished, content.obj, nil, height)
 	end)
@@ -871,7 +866,7 @@ AceGUI:RegisterLayout("Table",
 		local spaceH = tableObj.spaceH or tableObj.space or 0
 		local spaceV = tableObj.spaceV or tableObj.space or 0
 		local totalH = (content:GetWidth() or content.width or 0) - spaceH * (#cols - 1)
-
+
 		-- We need to reuse these because layout events can come in very frequently
 		local layoutCache = obj:GetUserData("layoutCache")
 		if not layoutCache then
@@ -879,7 +874,7 @@ AceGUI:RegisterLayout("Table",
 			obj:SetUserData("layoutCache", layoutCache)
 		end
 		local t, laneH, laneV, rowspans, rowStart, colStart = unpack(layoutCache)
-
+
 		-- Create the grid
 		local n, slotFound = 0
 		for i,child in ipairs(children) do
@@ -944,7 +939,7 @@ AceGUI:RegisterLayout("Table",
 							local f = child.frame
 							f:ClearAllPoints()
 							local childH = f:GetWidth() or 0
-
+
 							laneH[col] = max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH))
 						end
 					end
@@ -978,7 +973,7 @@ AceGUI:RegisterLayout("Table",
 					local cellObj = child:GetUserData("cell")
 					local offsetH = GetCellDimension("H", laneH, 1, colStart[child] - 1, spaceH) + (colStart[child] == 1 and 0 or spaceH)
 					local cellH = GetCellDimension("H", laneH, colStart[child], col, spaceH)
-
+
 					local f = child.frame
 					f:ClearAllPoints()
 					local childH = f:GetWidth() or 0
@@ -988,7 +983,7 @@ AceGUI:RegisterLayout("Table",
 					if child:IsFullWidth() or alignFn == "fill" or childH > cellH then
 						f:SetPoint("RIGHT", content, "LEFT", offsetH + align + cellH, 0)
 					end
-
+
 					if child.DoLayout then
 						child:DoLayout()
 					end
@@ -1007,7 +1002,7 @@ AceGUI:RegisterLayout("Table",
 					local cellObj = child:GetUserData("cell")
 					local offsetV = GetCellDimension("V", laneV, 1, rowStart[child] - 1, spaceV) + (rowStart[child] == 1 and 0 or spaceV)
 					local cellV = GetCellDimension("V", laneV, rowStart[child], row, spaceV)
-
+
 					local f = child.frame
 					local childV = f:GetHeight() or 0

@@ -1022,7 +1017,7 @@ AceGUI:RegisterLayout("Table",

 		-- Calculate total height
 		local totalV = GetCellDimension("V", laneV, 1, #laneV, spaceV)
-
+
 		-- Cleanup
 		for _,v in pairs(layoutCache) do wipe(v) end

diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua
index 18e49cb..c4c6092 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua
@@ -2,7 +2,7 @@
 DropdownGroup Container
 Container controlled by a dropdown on the top.
 -------------------------------------------------------------------------------]]
-local Type, Version = "DropdownGroup", 21
+local Type, Version = "DropdownGroup", 22
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -125,7 +125,7 @@ local function Constructor()
 	dropdown.frame:Show()
 	dropdown:SetLabel("")

-	local border = CreateFrame("Frame", nil, frame)
+	local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	border:SetPoint("TOPLEFT", 0, -26)
 	border:SetPoint("BOTTOMRIGHT", 0, 3)
 	border:SetBackdrop(PaneBackdrop)
@@ -150,7 +150,7 @@ local function Constructor()
 		widget[method] = func
 	end
 	dropdown.parentgroup = widget
-
+
 	return AceGUI:RegisterAsContainer(widget)
 end

diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua
index d1eb471..b9581d6 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua
@@ -1,7 +1,7 @@
 --[[-----------------------------------------------------------------------------
 Frame Container
 -------------------------------------------------------------------------------]]
-local Type, Version = "Frame", 26
+local Type, Version = "Frame", 28
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -83,6 +83,7 @@ local methods = {
 	["OnAcquire"] = function(self)
 		self.frame:SetParent(UIParent)
 		self.frame:SetFrameStrata("FULLSCREEN_DIALOG")
+		self.frame:SetFrameLevel(100) -- Lots of room to draw under it
 		self:SetTitle()
 		self:SetStatusText()
 		self:ApplyStatus()
@@ -179,13 +180,14 @@ local PaneBackdrop  = {
 }

 local function Constructor()
-	local frame = CreateFrame("Frame", nil, UIParent)
+	local frame = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	frame:Hide()

 	frame:EnableMouse(true)
 	frame:SetMovable(true)
 	frame:SetResizable(true)
 	frame:SetFrameStrata("FULLSCREEN_DIALOG")
+	frame:SetFrameLevel(100) -- Lots of room to draw under it
 	frame:SetBackdrop(FrameBackdrop)
 	frame:SetBackdropColor(0, 0, 0, 1)
 	frame:SetMinResize(400, 200)
@@ -201,7 +203,7 @@ local function Constructor()
 	closebutton:SetWidth(100)
 	closebutton:SetText(CLOSE)

-	local statusbg = CreateFrame("Button", nil, frame)
+	local statusbg = CreateFrame("Button", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	statusbg:SetPoint("BOTTOMLEFT", 15, 15)
 	statusbg:SetPoint("BOTTOMRIGHT", -132, 15)
 	statusbg:SetHeight(24)
@@ -219,7 +221,7 @@ local function Constructor()
 	statustext:SetText("")

 	local titlebg = frame:CreateTexture(nil, "OVERLAY")
-	titlebg:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header")
+	titlebg:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header
 	titlebg:SetTexCoord(0.31, 0.67, 0, 0.63)
 	titlebg:SetPoint("TOP", 0, 12)
 	titlebg:SetWidth(100)
@@ -235,14 +237,14 @@ local function Constructor()
 	titletext:SetPoint("TOP", titlebg, "TOP", 0, -14)

 	local titlebg_l = frame:CreateTexture(nil, "OVERLAY")
-	titlebg_l:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header")
+	titlebg_l:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header
 	titlebg_l:SetTexCoord(0.21, 0.31, 0, 0.63)
 	titlebg_l:SetPoint("RIGHT", titlebg, "LEFT")
 	titlebg_l:SetWidth(30)
 	titlebg_l:SetHeight(40)

 	local titlebg_r = frame:CreateTexture(nil, "OVERLAY")
-	titlebg_r:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header")
+	titlebg_r:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header
 	titlebg_r:SetTexCoord(0.67, 0.77, 0, 0.63)
 	titlebg_r:SetPoint("LEFT", titlebg, "RIGHT")
 	titlebg_r:SetWidth(30)
@@ -260,7 +262,7 @@ local function Constructor()
 	line1:SetWidth(14)
 	line1:SetHeight(14)
 	line1:SetPoint("BOTTOMRIGHT", -8, 8)
-	line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
+	line1:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
 	local x = 0.1 * 14/17
 	line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)

@@ -268,7 +270,7 @@ local function Constructor()
 	line2:SetWidth(8)
 	line2:SetHeight(8)
 	line2:SetPoint("BOTTOMRIGHT", -8, 8)
-	line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
+	line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
 	local x = 0.1 * 8/17
 	line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)

diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua
index 1a330ef..26db900 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua
@@ -2,7 +2,7 @@
 InlineGroup Container
 Simple container widget that creates a visible "box" with an optional title.
 -------------------------------------------------------------------------------]]
-local Type, Version = "InlineGroup", 21
+local Type, Version = "InlineGroup", 22
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -75,7 +75,7 @@ local function Constructor()
 	titletext:SetJustifyH("LEFT")
 	titletext:SetHeight(18)

-	local border = CreateFrame("Frame", nil, frame)
+	local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	border:SetPoint("TOPLEFT", 0, -17)
 	border:SetPoint("BOTTOMRIGHT", -1, 3)
 	border:SetBackdrop(PaneBackdrop)
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua
index 81e6e41..be6052f 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua
@@ -2,13 +2,13 @@
 ScrollFrame Container
 Plain container that scrolls its content and doesn't grow in height.
 -------------------------------------------------------------------------------]]
-local Type, Version = "ScrollFrame", 24
+local Type, Version = "ScrollFrame", 26
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

 -- Lua APIs
 local pairs, assert, type = pairs, assert, type
-local min, max, floor, abs = math.min, math.max, math.floor, math.abs
+local min, max, floor = math.min, math.max, math.floor

 -- WoW APIs
 local CreateFrame, UIParent = CreateFrame, UIParent
@@ -40,7 +40,7 @@ end
 Methods
 -------------------------------------------------------------------------------]]
 local methods = {
-	["OnAcquire"] = function(self)
+	["OnAcquire"] = function(self)
 		self:SetScroll(0)
 		self.scrollframe:SetScript("OnUpdate", FixScrollOnUpdate)
 	end,
@@ -53,7 +53,7 @@ local methods = {
 		self.scrollframe:SetPoint("BOTTOMRIGHT")
 		self.scrollbar:Hide()
 		self.scrollBarShown = nil
-		self.content.height, self.content.width = nil, nil
+		self.content.height, self.content.width, self.content.original_width = nil, nil, nil
 	end,

 	["SetScroll"] = function(self, value)
@@ -77,7 +77,7 @@ local methods = {
 	["MoveScroll"] = function(self, value)
 		local status = self.status or self.localstatus
 		local height, viewheight = self.scrollframe:GetHeight(), self.content:GetHeight()
-
+
 		if self.scrollBarShown then
 			local diff = height - viewheight
 			local delta = 1
@@ -94,7 +94,6 @@ local methods = {
 		local status = self.status or self.localstatus
 		local height, viewheight = self.scrollframe:GetHeight(), self.content:GetHeight()
 		local offset = status.offset or 0
-		local curvalue = self.scrollbar:GetValue()
 		-- Give us a margin of error of 2 pixels to stop some conditions that i would blame on floating point inaccuracys
 		-- No-one is going to miss 2 pixels at the bottom of the frame, anyhow!
 		if viewheight < height + 2 then
@@ -103,6 +102,9 @@ local methods = {
 				self.scrollbar:Hide()
 				self.scrollbar:SetValue(0)
 				self.scrollframe:SetPoint("BOTTOMRIGHT")
+				if self.content.original_width then
+					self.content.width = self.content.original_width
+				end
 				self:DoLayout()
 			end
 		else
@@ -110,6 +112,9 @@ local methods = {
 				self.scrollBarShown = true
 				self.scrollbar:Show()
 				self.scrollframe:SetPoint("BOTTOMRIGHT", -20, 0)
+				if self.content.original_width then
+					self.content.width = self.content.original_width - 20
+				end
 				self:DoLayout()
 			end
 			local value = (offset / (viewheight - height) * 1000)
@@ -128,6 +133,11 @@ local methods = {

 	["LayoutFinished"] = function(self, width, height)
 		self.content:SetHeight(height or 0 + 20)
+
+		-- update the scrollframe
+		self:FixScroll()
+
+		-- schedule another update when everything has "settled"
 		self.scrollframe:SetScript("OnUpdate", FixScrollOnUpdate)
 	end,

@@ -141,7 +151,8 @@ local methods = {

 	["OnWidthSet"] = function(self, width)
 		local content = self.content
-		content.width = width
+		content.width = width - (self.scrollBarShown and 20 or 0)
+		content.original_width = width
 	end,

 	["OnHeightSet"] = function(self, height)
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua
index 1d5b71a..0649c06 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua
@@ -2,12 +2,12 @@
 TabGroup Container
 Container that uses tabs on top to switch between groups.
 -------------------------------------------------------------------------------]]
-local Type, Version = "TabGroup", 36
+local Type, Version = "TabGroup", 37
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

 -- Lua APIs
-local pairs, ipairs, assert, type, wipe = pairs, ipairs, assert, type, wipe
+local pairs, ipairs, assert, type, wipe = pairs, ipairs, assert, type, table.wipe

 -- WoW APIs
 local PlaySound = PlaySound
@@ -161,22 +161,21 @@ local methods = {
 		self.tablist = tabs
 		self:BuildTabs()
 	end,
-
+

 	["BuildTabs"] = function(self)
 		local hastitle = (self.titletext:GetText() and self.titletext:GetText() ~= "")
-		local status = self.status or self.localstatus
 		local tablist = self.tablist
 		local tabs = self.tabs
-
+
 		if not tablist then return end
-
+
 		local width = self.frame.width or self.frame:GetWidth() or 0
-
+
 		wipe(widths)
 		wipe(rowwidths)
 		wipe(rowends)
-
+
 		--Place Text into tabs and get thier initial width
 		for i, v in ipairs(tablist) do
 			local tab = tabs[i]
@@ -184,19 +183,19 @@ local methods = {
 				tab = self:CreateTab(i)
 				tabs[i] = tab
 			end
-
+
 			tab:Show()
 			tab:SetText(v.text)
 			tab:SetDisabled(v.disabled)
 			tab.value = v.value
-
+
 			widths[i] = tab:GetWidth() - 6 --tabs are anchored 10 pixels from the right side of the previous one to reduce spacing, but add a fixed 4px padding for the text
 		end
-
+
 		for i = (#tablist)+1, #tabs, 1 do
 			tabs[i]:Hide()
 		end
-
+
 		--First pass, find the minimum number of rows needed to hold all tabs and the initial tab layout
 		local numtabs = #tablist
 		local numrows = 1
@@ -214,7 +213,7 @@ local methods = {
 		end
 		rowwidths[numrows] = usedwidth + 10 --first tab in each row takes up an extra 10px
 		rowends[numrows] = #tablist
-
+
 		--Fix for single tabs being left on the last row, move a tab from the row above if applicable
 		if numrows > 1 then
 			--if the last row has only one tab
@@ -245,22 +244,22 @@ local methods = {
 					tab:SetPoint("LEFT", tabs[tabno-1], "RIGHT", -10, 0)
 				end
 			end
-
+
 			-- equal padding for each tab to fill the available width,
 			-- if the used space is above 75% already
-			-- the 18 pixel is the typical width of a scrollbar, so we can have a tab group inside a scrolling frame,
+			-- the 18 pixel is the typical width of a scrollbar, so we can have a tab group inside a scrolling frame,
 			-- and not have the tabs jump around funny when switching between tabs that need scrolling and those that don't
 			local padding = 0
 			if not (numrows == 1 and rowwidths[1] < width*0.75 - 18) then
 				padding = (width - rowwidths[row]) / (endtab - starttab+1)
 			end
-
+
 			for i = starttab, endtab do
 				PanelTemplates_TabResize(tabs[i], padding + 4, nil, nil, width, tabs[i]:GetFontString():GetStringWidth())
 			end
 			starttab = endtab + 1
 		end
-
+
 		self.borderoffset = (hastitle and 17 or 10)+((numrows)*20)
 		self.border:SetPoint("TOPLEFT", 1, -self.borderoffset)
 	end,
@@ -286,7 +285,7 @@ local methods = {
 		content:SetHeight(contentheight)
 		content.height = contentheight
 	end,
-
+
 	["LayoutFinished"] = function(self, width, height)
 		if self.noAutoHeight then return end
 		self:SetHeight((height or 0) + (self.borderoffset + 23))
@@ -317,7 +316,7 @@ local function Constructor()
 	titletext:SetHeight(18)
 	titletext:SetText("")

-	local border = CreateFrame("Frame", nil, frame)
+	local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	border:SetPoint("TOPLEFT", 1, -27)
 	border:SetPoint("BOTTOMRIGHT", -1, 3)
 	border:SetBackdrop(PaneBackdrop)
@@ -343,7 +342,7 @@ local function Constructor()
 	for method, func in pairs(methods) do
 		widget[method] = func
 	end
-
+
 	return AceGUI:RegisterAsContainer(widget)
 end

diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
index ca27bfb..c09c5ec 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
@@ -2,12 +2,10 @@
 TreeGroup Container
 Container that uses a tree control to switch between groups.
 -------------------------------------------------------------------------------]]
-local Type, Version = "TreeGroup", 41
+local Type, Version = "TreeGroup", 45
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

-local WoW80 = select(4, GetBuildInfo()) >= 80000
-
 -- Lua APIs
 local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type
 local math_min, math_max, floor = math.min, math.max, floor
@@ -18,7 +16,7 @@ local CreateFrame, UIParent = CreateFrame, UIParent

 -- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
 -- List them here for Mikk's FindGlobals script
--- GLOBALS: GameTooltip, FONT_COLOR_CODE_CLOSE
+-- GLOBALS: FONT_COLOR_CODE_CLOSE

 -- Recycling functions
 local new, del
@@ -36,7 +34,7 @@ do
 	function del(t)
 		for k in pairs(t) do
 			t[k] = nil
-		end
+		end
 		pool[t] = true
 	end
 end
@@ -59,7 +57,6 @@ end
 local function UpdateButton(button, treeline, selected, canExpand, isExpanded)
 	local self = button.obj
 	local toggle = button.toggle
-	local frame = self.frame
 	local text = treeline.text or ""
 	local icon = treeline.icon
 	local iconCoords = treeline.iconCoords
@@ -67,7 +64,7 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded)
 	local value = treeline.value
 	local uniquevalue = treeline.uniquevalue
 	local disabled = treeline.disabled
-
+
 	button.treeline = treeline
 	button.value = value
 	button.uniquevalue = uniquevalue
@@ -78,8 +75,6 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded)
 		button:UnlockHighlight()
 		button.selected = false
 	end
-	local normalTexture = button:GetNormalTexture()
-	local line = button.line
 	button.level = level
 	if ( level == 1 ) then
 		button:SetNormalFontObject("GameFontNormal")
@@ -90,7 +85,7 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded)
 		button:SetHighlightFontObject("GameFontHighlightSmall")
 		button.text:SetPoint("LEFT", (icon and 16 or 0) + 8 * level, 2)
 	end
-
+
 	if disabled then
 		button:EnableMouse(false)
 		button.text:SetText("|cff808080"..text..FONT_COLOR_CODE_CLOSE)
@@ -98,27 +93,27 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded)
 		button.text:SetText(text)
 		button:EnableMouse(true)
 	end
-
+
 	if icon then
 		button.icon:SetTexture(icon)
 		button.icon:SetPoint("LEFT", 8 * level, (level == 1) and 0 or 1)
 	else
 		button.icon:SetTexture(nil)
 	end
-
+
 	if iconCoords then
 		button.icon:SetTexCoord(unpack(iconCoords))
 	else
 		button.icon:SetTexCoord(0, 1, 0, 1)
 	end
-
+
 	if canExpand then
 		if not isExpanded then
-			toggle:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-UP")
-			toggle:SetPushedTexture("Interface\\Buttons\\UI-PlusButton-DOWN")
+			toggle:SetNormalTexture(130838) -- Interface\\Buttons\\UI-PlusButton-UP
+			toggle:SetPushedTexture(130836) -- Interface\\Buttons\\UI-PlusButton-DOWN
 		else
-			toggle:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-UP")
-			toggle:SetPushedTexture("Interface\\Buttons\\UI-MinusButton-DOWN")
+			toggle:SetNormalTexture(130821) -- Interface\\Buttons\\UI-MinusButton-UP
+			toggle:SetPushedTexture(130820) -- Interface\\Buttons\\UI-MinusButton-DOWN
 		end
 		toggle:Show()
 	else
@@ -201,7 +196,6 @@ end

 local function Button_OnDoubleClick(button)
 	local self = button.obj
-	local status = self.status or self.localstatus
 	local status = (self.status or self.localstatus).groups
 	status[button.uniquevalue] = not status[button.uniquevalue]
 	self:RefreshTree()
@@ -212,11 +206,13 @@ local function Button_OnEnter(frame)
 	self:Fire("OnButtonEnter", frame.uniquevalue, frame)

 	if self.enabletooltips then
-		GameTooltip:SetOwner(frame, "ANCHOR_NONE")
-		GameTooltip:SetPoint("LEFT",frame,"RIGHT")
-		GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true)
+		local tooltip = AceGUI.tooltip
+		tooltip:SetOwner(frame, "ANCHOR_NONE")
+		tooltip:ClearAllPoints()
+		tooltip:SetPoint("LEFT",frame,"RIGHT")
+		tooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true)

-		GameTooltip:Show()
+		tooltip:Show()
 	end
 end

@@ -225,7 +221,7 @@ local function Button_OnLeave(frame)
 	self:Fire("OnButtonLeave", frame.uniquevalue, frame)

 	if self.enabletooltips then
-		GameTooltip:Hide()
+		AceGUI.tooltip:Hide()
 	end
 end

@@ -271,18 +267,19 @@ end
 local function Dragger_OnMouseUp(frame)
 	local treeframe = frame:GetParent()
 	local self = treeframe.obj
-	local frame = treeframe:GetParent()
+	local treeframeParent = treeframe:GetParent()
 	treeframe:StopMovingOrSizing()
 	--treeframe:SetScript("OnUpdate", nil)
 	treeframe:SetUserPlaced(false)
 	--Without this :GetHeight will get stuck on the current height, causing the tree contents to not resize
 	treeframe:SetHeight(0)
-	treeframe:SetPoint("TOPLEFT", frame, "TOPLEFT",0,0)
-	treeframe:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT",0,0)
-
+	treeframe:ClearAllPoints()
+	treeframe:SetPoint("TOPLEFT", treeframeParent, "TOPLEFT",0,0)
+	treeframe:SetPoint("BOTTOMLEFT", treeframeParent, "BOTTOMLEFT",0,0)
+
 	local status = self.status or self.localstatus
 	status.treewidth = treeframe:GetWidth()
-
+
 	treeframe.obj:Fire("OnTreeResize",treeframe:GetWidth())
 	-- recalculate the content width
 	treeframe.obj:OnWidthSet(status.fullwidth)
@@ -367,8 +364,8 @@ local methods = {
 	--sets the tree to be displayed
 	["SetTree"] = function(self, tree, filter)
 		self.filter = filter
-		if tree then
-			assert(type(tree) == "table")
+		if tree then
+			assert(type(tree) == "table")
 		end
 		self.tree = tree
 		self:RefreshTree()
@@ -376,8 +373,7 @@ local methods = {

 	["BuildLevel"] = function(self, tree, level, parent)
 		local groups = (self.status or self.localstatus).groups
-		local hasChildren = self.hasChildren
-
+
 		for i, v in ipairs(tree) do
 			if v.children then
 				if not self.filter or ShouldDisplayLevel(v.children) then
@@ -414,7 +410,7 @@ local methods = {
 		local tree = self.tree

 		local treeframe = self.treeframe
-
+
 		status.scrollToSelection = status.scrollToSelection or scrollToSelection	-- needs to be cached in case the control hasn't been drawn yet (code bails out below)

 		self:BuildLevel(tree, 1)
@@ -424,14 +420,13 @@ local methods = {
 		local maxlines = (floor(((self.treeframe:GetHeight()or 0) - 20 ) / 18))
 		if maxlines <= 0 then return end

-		-- workaround for lag spikes on WoW 8.0
-		if WoW80 and self.frame:GetParent() == UIParent and not fromOnUpdate then
+		if self.frame:GetParent() == UIParent and not fromOnUpdate then
 			self.frame:SetScript("OnUpdate", FirstFrameUpdate)
 			return
 		end

 		local first, last
-
+
 		scrollToSelection = status.scrollToSelection
 		status.scrollToSelection = nil

@@ -507,9 +502,9 @@ local methods = {
 			button:Show()
 			buttonnum = buttonnum + 1
 		end
-
+
 	end,
-
+
 	["SetSelected"] = function(self, value)
 		local status = self.status or self.localstatus
 		if status.selected ~= value then
@@ -559,16 +554,16 @@ local methods = {
 		local treeframe = self.treeframe
 		local status = self.status or self.localstatus
 		status.fullwidth = width
-
+
 		local contentwidth = width - status.treewidth - 20
 		if contentwidth < 0 then
 			contentwidth = 0
 		end
 		content:SetWidth(contentwidth)
 		content.width = contentwidth
-
+
 		local maxtreewidth = math_min(400, width - 50)
-
+
 		if maxtreewidth > 100 and status.treewidth > maxtreewidth then
 			self:SetTreeWidth(maxtreewidth, status.treesizable)
 		end
@@ -594,16 +589,16 @@ local methods = {
 				treewidth = DEFAULT_TREE_WIDTH
 			else
 				resizable = false
-				treewidth = DEFAULT_TREE_WIDTH
+				treewidth = DEFAULT_TREE_WIDTH
 			end
 		end
 		self.treeframe:SetWidth(treewidth)
 		self.dragger:EnableMouse(resizable)
-
+
 		local status = self.status or self.localstatus
 		status.treewidth = treewidth
 		status.treesizable = resizable
-
+
 		-- recalculate the content width
 		if status.fullwidth then
 			self:OnWidthSet(status.fullwidth)
@@ -634,7 +629,7 @@ local PaneBackdrop  = {
 local DraggerBackdrop  = {
 	bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
 	edgeFile = nil,
-	tile = true, tileSize = 16, edgeSize = 0,
+	tile = true, tileSize = 16, edgeSize = 1,
 	insets = { left = 3, right = 3, top = 7, bottom = 7 }
 }

@@ -642,7 +637,7 @@ local function Constructor()
 	local num = AceGUI:GetNextWidgetNum(Type)
 	local frame = CreateFrame("Frame", nil, UIParent)

-	local treeframe = CreateFrame("Frame", nil, frame)
+	local treeframe = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	treeframe:SetPoint("TOPLEFT")
 	treeframe:SetPoint("BOTTOMLEFT")
 	treeframe:SetWidth(DEFAULT_TREE_WIDTH)
@@ -657,7 +652,7 @@ local function Constructor()
 	treeframe:SetScript("OnSizeChanged", Tree_OnSizeChanged)
 	treeframe:SetScript("OnMouseWheel", Tree_OnMouseWheel)

-	local dragger = CreateFrame("Frame", nil, treeframe)
+	local dragger = CreateFrame("Frame", nil, treeframe, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	dragger:SetWidth(8)
 	dragger:SetPoint("TOP", treeframe, "TOPRIGHT")
 	dragger:SetPoint("BOTTOM", treeframe, "BOTTOMRIGHT")
@@ -682,7 +677,7 @@ local function Constructor()
 	scrollbg:SetAllPoints(scrollbar)
 	scrollbg:SetColorTexture(0,0,0,0.4)

-	local border = CreateFrame("Frame",nil,frame)
+	local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT")
 	border:SetPoint("BOTTOMRIGHT")
 	border:SetBackdrop(PaneBackdrop)
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua
index f572804..a9192b3 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua
@@ -30,21 +30,21 @@ do
 	local function frameOnClose(this)
 		this.obj:Fire("OnClose")
 	end
-
+
 	local function closeOnClick(this)
 		PlaySound(799) -- SOUNDKIT.GS_TITLE_OPTION_EXIT
 		this.obj:Hide()
 	end
-
+
 	local function frameOnMouseDown(this)
 		AceGUI:ClearFocus()
 	end
-
+
 	local function titleOnMouseDown(this)
 		this:GetParent():StartMoving()
 		AceGUI:ClearFocus()
 	end
-
+
 	local function frameOnMouseUp(this)
 		local frame = this:GetParent()
 		frame:StopMovingOrSizing()
@@ -55,22 +55,22 @@ do
 		status.top = frame:GetTop()
 		status.left = frame:GetLeft()
 	end
-
+
 	local function sizerseOnMouseDown(this)
 		this:GetParent():StartSizing("BOTTOMRIGHT")
 		AceGUI:ClearFocus()
 	end
-
+
 	local function sizersOnMouseDown(this)
 		this:GetParent():StartSizing("BOTTOM")
 		AceGUI:ClearFocus()
 	end
-
+
 	local function sizereOnMouseDown(this)
 		this:GetParent():StartSizing("RIGHT")
 		AceGUI:ClearFocus()
 	end
-
+
 	local function sizerOnMouseUp(this)
 		this:GetParent():StopMovingOrSizing()
 	end
@@ -78,19 +78,19 @@ do
 	local function SetTitle(self,title)
 		self.titletext:SetText(title)
 	end
-
+
 	local function SetStatusText(self,text)
 		-- self.statustext:SetText(text)
 	end
-
+
 	local function Hide(self)
 		self.frame:Hide()
 	end
-
+
 	local function Show(self)
 		self.frame:Show()
 	end
-
+
 	local function OnAcquire(self)
 		self.frame:SetParent(UIParent)
 		self.frame:SetFrameStrata("FULLSCREEN_DIALOG")
@@ -98,21 +98,21 @@ do
 		self:EnableResize(true)
 		self:Show()
 	end
-
+
 	local function OnRelease(self)
 		self.status = nil
 		for k in pairs(self.localstatus) do
 			self.localstatus[k] = nil
 		end
 	end
-
+
 	-- called to set an external table to store status in
 	local function SetStatusTable(self, status)
 		assert(type(status) == "table")
 		self.status = status
 		self:ApplyStatus()
 	end
-
+
 	local function ApplyStatus(self)
 		local status = self.status or self.localstatus
 		local frame = self.frame
@@ -125,7 +125,7 @@ do
 			frame:SetPoint("CENTER",UIParent,"CENTER")
 		end
 	end
-
+
 	local function OnWidthSet(self, width)
 		local content = self.content
 		local contentwidth = width - 34
@@ -135,8 +135,8 @@ do
 		content:SetWidth(contentwidth)
 		content.width = contentwidth
 	end
-
-
+
+
 	local function OnHeightSet(self, height)
 		local content = self.content
 		local contentheight = height - 57
@@ -146,19 +146,19 @@ do
 		content:SetHeight(contentheight)
 		content.height = contentheight
 	end
-
+
 	local function EnableResize(self, state)
 		local func = state and "Show" or "Hide"
 		self.sizer_se[func](self.sizer_se)
 		self.sizer_s[func](self.sizer_s)
 		self.sizer_e[func](self.sizer_e)
 	end
-
+
 	local function Constructor()
 		local frame = CreateFrame("Frame",nil,UIParent)
 		local self = {}
 		self.type = "Window"
-
+
 		self.Hide = Hide
 		self.Show = Show
 		self.SetTitle =  SetTitle
@@ -170,9 +170,9 @@ do
 		self.OnWidthSet = OnWidthSet
 		self.OnHeightSet = OnHeightSet
 		self.EnableResize = EnableResize
-
+
 		self.localstatus = {}
-
+
 		self.frame = frame
 		frame.obj = self
 		frame:SetWidth(700)
@@ -183,91 +183,91 @@ do
 		frame:SetResizable(true)
 		frame:SetFrameStrata("FULLSCREEN_DIALOG")
 		frame:SetScript("OnMouseDown", frameOnMouseDown)
-
+
 		frame:SetScript("OnShow",frameOnShow)
 		frame:SetScript("OnHide",frameOnClose)
 		frame:SetMinResize(240,240)
 		frame:SetToplevel(true)

 		local titlebg = frame:CreateTexture(nil, "BACKGROUND")
-		titlebg:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Title-Background]])
+		titlebg:SetTexture(251966) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Title-Background
 		titlebg:SetPoint("TOPLEFT", 9, -6)
 		titlebg:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -28, -24)
-
+
 		local dialogbg = frame:CreateTexture(nil, "BACKGROUND")
-		dialogbg:SetTexture([[Interface\Tooltips\UI-Tooltip-Background]])
+		dialogbg:SetTexture(137056) -- Interface\\Tooltips\\UI-Tooltip-Background
 		dialogbg:SetPoint("TOPLEFT", 8, -24)
 		dialogbg:SetPoint("BOTTOMRIGHT", -6, 8)
 		dialogbg:SetVertexColor(0, 0, 0, .75)
-
+
 		local topleft = frame:CreateTexture(nil, "BORDER")
-		topleft:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
+		topleft:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border
 		topleft:SetWidth(64)
 		topleft:SetHeight(64)
 		topleft:SetPoint("TOPLEFT")
 		topleft:SetTexCoord(0.501953125, 0.625, 0, 1)
-
+
 		local topright = frame:CreateTexture(nil, "BORDER")
-		topright:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
+		topright:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border
 		topright:SetWidth(64)
 		topright:SetHeight(64)
 		topright:SetPoint("TOPRIGHT")
 		topright:SetTexCoord(0.625, 0.75, 0, 1)
-
+
 		local top = frame:CreateTexture(nil, "BORDER")
-		top:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
+		top:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border
 		top:SetHeight(64)
 		top:SetPoint("TOPLEFT", topleft, "TOPRIGHT")
 		top:SetPoint("TOPRIGHT", topright, "TOPLEFT")
 		top:SetTexCoord(0.25, 0.369140625, 0, 1)
-
+
 		local bottomleft = frame:CreateTexture(nil, "BORDER")
-		bottomleft:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
+		bottomleft:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border
 		bottomleft:SetWidth(64)
 		bottomleft:SetHeight(64)
 		bottomleft:SetPoint("BOTTOMLEFT")
 		bottomleft:SetTexCoord(0.751953125, 0.875, 0, 1)
-
+
 		local bottomright = frame:CreateTexture(nil, "BORDER")
-		bottomright:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
+		bottomright:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border
 		bottomright:SetWidth(64)
 		bottomright:SetHeight(64)
 		bottomright:SetPoint("BOTTOMRIGHT")
 		bottomright:SetTexCoord(0.875, 1, 0, 1)
-
+
 		local bottom = frame:CreateTexture(nil, "BORDER")
-		bottom:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
+		bottom:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border
 		bottom:SetHeight(64)
 		bottom:SetPoint("BOTTOMLEFT", bottomleft, "BOTTOMRIGHT")
 		bottom:SetPoint("BOTTOMRIGHT", bottomright, "BOTTOMLEFT")
 		bottom:SetTexCoord(0.376953125, 0.498046875, 0, 1)
-
+
 		local left = frame:CreateTexture(nil, "BORDER")
-		left:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
+		left:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border
 		left:SetWidth(64)
 		left:SetPoint("TOPLEFT", topleft, "BOTTOMLEFT")
 		left:SetPoint("BOTTOMLEFT", bottomleft, "TOPLEFT")
 		left:SetTexCoord(0.001953125, 0.125, 0, 1)
-
+
 		local right = frame:CreateTexture(nil, "BORDER")
-		right:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
+		right:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border
 		right:SetWidth(64)
 		right:SetPoint("TOPRIGHT", topright, "BOTTOMRIGHT")
 		right:SetPoint("BOTTOMRIGHT", bottomright, "TOPRIGHT")
 		right:SetTexCoord(0.1171875, 0.2421875, 0, 1)
-
+
 		local close = CreateFrame("Button", nil, frame, "UIPanelCloseButton")
 		close:SetPoint("TOPRIGHT", 2, 1)
 		close:SetScript("OnClick", closeOnClick)
 		self.closebutton = close
 		close.obj = self
-
+
 		local titletext = frame:CreateFontString(nil, "ARTWORK")
 		titletext:SetFontObject(GameFontNormal)
 		titletext:SetPoint("TOPLEFT", 12, -8)
 		titletext:SetPoint("TOPRIGHT", -32, -8)
 		self.titletext = titletext
-
+
 		local title = CreateFrame("Button", nil, frame)
 		title:SetPoint("TOPLEFT", titlebg)
 		title:SetPoint("BOTTOMRIGHT", titlebg)
@@ -275,7 +275,7 @@ do
 		title:SetScript("OnMouseDown",titleOnMouseDown)
 		title:SetScript("OnMouseUp", frameOnMouseUp)
 		self.title = title
-
+
 		local sizer_se = CreateFrame("Frame",nil,frame)
 		sizer_se:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0)
 		sizer_se:SetWidth(25)
@@ -290,7 +290,7 @@ do
 		line1:SetWidth(14)
 		line1:SetHeight(14)
 		line1:SetPoint("BOTTOMRIGHT", -8, 8)
-		line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
+		line1:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
 		local x = 0.1 * 14/17
 		line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)

@@ -299,7 +299,7 @@ do
 		line2:SetWidth(8)
 		line2:SetHeight(8)
 		line2:SetPoint("BOTTOMRIGHT", -8, 8)
-		line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
+		line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
 		local x = 0.1 * 8/17
 		line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)

@@ -311,7 +311,7 @@ do
 		sizer_s:SetScript("OnMouseDown",sizersOnMouseDown)
 		sizer_s:SetScript("OnMouseUp", sizerOnMouseUp)
 		self.sizer_s = sizer_s
-
+
 		local sizer_e = CreateFrame("Frame",nil,frame)
 		sizer_e:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,25)
 		sizer_e:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0)
@@ -320,17 +320,17 @@ do
 		sizer_e:SetScript("OnMouseDown",sizereOnMouseDown)
 		sizer_e:SetScript("OnMouseUp", sizerOnMouseUp)
 		self.sizer_e = sizer_e
-
+
 		--Container Support
 		local content = CreateFrame("Frame",nil,frame)
 		self.content = content
 		content.obj = self
 		content:SetPoint("TOPLEFT",frame,"TOPLEFT",12,-32)
 		content:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-12,13)
-
+
 		AceGUI:RegisterAsContainer(self)
-		return self
+		return self
 	end
-
+
 	AceGUI:RegisterWidgetType(Type,Constructor,Version)
 end
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua
index dfa76a5..8e650ce 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua
@@ -51,7 +51,7 @@ local methods = {
 			self:SetWidth(self.text:GetStringWidth() + 30)
 		end
 	end,
-
+
 	["SetAutoWidth"] = function(self, autoWidth)
 		self.autoWidth = autoWidth
 		if self.autoWidth then
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua
index 345a0e4..d2adb88 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua
@@ -1,7 +1,7 @@
 --[[-----------------------------------------------------------------------------
 Checkbox Widget
 -------------------------------------------------------------------------------]]
-local Type, Version = "CheckBox", 24
+local Type, Version = "CheckBox", 26
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -26,7 +26,7 @@ local function AlignImage(self)
 		self.text:SetPoint("LEFT", self.checkbg, "RIGHT")
 		self.text:SetPoint("RIGHT")
 	else
-		self.text:SetPoint("LEFT", self.checkbg, "RIGHT", self.image:GetWidth() + 2, 0)
+		self.text:SetPoint("LEFT", self.image, "RIGHT", 1, 0)
 		self.text:SetPoint("RIGHT")
 	end
 end
@@ -91,7 +91,7 @@ local methods = {
 		if self.desc then
 			self.desc:SetWidth(width - 30)
 			if self.desc:GetText() and self.desc:GetText() ~= "" then
-				self:SetHeight(28 + self.desc:GetHeight())
+				self:SetHeight(28 + self.desc:GetStringHeight())
 			end
 		end
 	end,
@@ -119,20 +119,20 @@ local methods = {
 		end
 	end,

-	["SetValue"] = function(self,value)
+	["SetValue"] = function(self, value)
 		local check = self.check
 		self.checked = value
 		if value then
-			SetDesaturation(self.check, false)
-			self.check:Show()
+			SetDesaturation(check, false)
+			check:Show()
 		else
 			--Nil is the unknown tristate value
 			if self.tristate and value == nil then
-				SetDesaturation(self.check, true)
-				self.check:Show()
+				SetDesaturation(check, true)
+				check:Show()
 			else
-				SetDesaturation(self.check, false)
-				self.check:Hide()
+				SetDesaturation(check, false)
+				check:Hide()
 			end
 		end
 		self:SetDisabled(self.disabled)
@@ -155,21 +155,21 @@ local methods = {
 		local size
 		if type == "radio" then
 			size = 16
-			checkbg:SetTexture("Interface\\Buttons\\UI-RadioButton")
+			checkbg:SetTexture(130843) -- Interface\\Buttons\\UI-RadioButton
 			checkbg:SetTexCoord(0, 0.25, 0, 1)
-			check:SetTexture("Interface\\Buttons\\UI-RadioButton")
+			check:SetTexture(130843) -- Interface\\Buttons\\UI-RadioButton
 			check:SetTexCoord(0.25, 0.5, 0, 1)
 			check:SetBlendMode("ADD")
-			highlight:SetTexture("Interface\\Buttons\\UI-RadioButton")
+			highlight:SetTexture(130843) -- Interface\\Buttons\\UI-RadioButton
 			highlight:SetTexCoord(0.5, 0.75, 0, 1)
 		else
 			size = 24
-			checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up")
+			checkbg:SetTexture(130755) -- Interface\\Buttons\\UI-CheckBox-Up
 			checkbg:SetTexCoord(0, 1, 0, 1)
-			check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
+			check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check
 			check:SetTexCoord(0, 1, 0, 1)
 			check:SetBlendMode("BLEND")
-			highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight")
+			highlight:SetTexture(130753) -- Interface\\Buttons\\UI-CheckBox-Highlight
 			highlight:SetTexCoord(0, 1, 0, 1)
 		end
 		checkbg:SetHeight(size)
@@ -211,7 +211,7 @@ local methods = {
 			self.desc:Show()
 			--self.text:SetFontObject(GameFontNormal)
 			self.desc:SetText(desc)
-			self:SetHeight(28 + self.desc:GetHeight())
+			self:SetHeight(28 + self.desc:GetStringHeight())
 		else
 			if self.desc then
 				self.desc:SetText("")
@@ -221,11 +221,11 @@ local methods = {
 			self:SetHeight(24)
 		end
 	end,
-
+
 	["SetImage"] = function(self, path, ...)
 		local image = self.image
 		image:SetTexture(path)
-
+
 		if image:GetTexture() then
 			local n = select("#", ...)
 			if n == 4 or n == 8 then
@@ -255,11 +255,11 @@ local function Constructor()
 	checkbg:SetWidth(24)
 	checkbg:SetHeight(24)
 	checkbg:SetPoint("TOPLEFT")
-	checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up")
+	checkbg:SetTexture(130755) -- Interface\\Buttons\\UI-CheckBox-Up

 	local check = frame:CreateTexture(nil, "OVERLAY")
 	check:SetAllPoints(checkbg)
-	check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
+	check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check

 	local text = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
 	text:SetJustifyH("LEFT")
@@ -268,7 +268,7 @@ local function Constructor()
 	text:SetPoint("RIGHT")

 	local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
-	highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight")
+	highlight:SetTexture(130753) -- Interface\\Buttons\\UI-CheckBox-Highlight
 	highlight:SetBlendMode("ADD")
 	highlight:SetAllPoints(checkbg)

diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
index 050bb63..f4cab66 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
@@ -1,7 +1,7 @@
 --[[-----------------------------------------------------------------------------
 ColorPicker Widget
 -------------------------------------------------------------------------------]]
-local Type, Version = "ColorPicker", 24
+local Type, Version = "ColorPicker", 25
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -13,7 +13,7 @@ local CreateFrame, UIParent = CreateFrame, UIParent

 -- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
 -- List them here for Mikk's FindGlobals script
--- GLOBALS: ShowUIPanel, HideUIPanel, ColorPickerFrame, OpacitySliderFrame
+-- GLOBALS: ColorPickerFrame, OpacitySliderFrame

 --[[-----------------------------------------------------------------------------
 Support functions
@@ -47,7 +47,7 @@ local function Control_OnLeave(frame)
 end

 local function ColorSwatch_OnClick(frame)
-	HideUIPanel(ColorPickerFrame)
+	ColorPickerFrame:Hide()
 	local self = frame.obj
 	if not self.disabled then
 		ColorPickerFrame:SetFrameStrata("FULLSCREEN_DIALOG")
@@ -77,7 +77,7 @@ local function ColorSwatch_OnClick(frame)
 			ColorCallback(self, r, g, b, a, true)
 		end

-		ShowUIPanel(ColorPickerFrame)
+		ColorPickerFrame:Show()
 	end
 	AceGUI:ClearFocus()
 end
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua
index b13688c..9dd4b60 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua
@@ -1,4 +1,4 @@
---[[ $Id: AceGUIWidget-DropDown-Items.lua 1167 2017-08-29 22:08:48Z funkydude $ ]]--
+--[[ $Id: AceGUIWidget-DropDown-Items.lua 1202 2019-05-15 23:11:22Z nevcairiel $ ]]--

 local AceGUI = LibStub("AceGUI-3.0")

@@ -33,7 +33,7 @@ end

 -- ItemBase is the base "class" for all dropdown items.
 -- Each item has to use ItemBase.Create(widgetType) to
--- create an initial 'self' value.
+-- create an initial 'self' value.
 -- ItemBase will add common functions and ui event handlers.
 -- Be sure to keep basic usage when you override functions.

@@ -52,7 +52,7 @@ function ItemBase.Frame_OnEnter(this)
 		self.highlight:Show()
 	end
 	self:Fire("OnEnter")
-
+
 	if self.specialOnEnter then
 		self.specialOnEnter(self)
 	end
@@ -60,10 +60,10 @@ end

 function ItemBase.Frame_OnLeave(this)
 	local self = this.obj
-
+
 	self.highlight:Hide()
 	self:Fire("OnLeave")
-
+
 	if self.specialOnLeave then
 		self.specialOnLeave(self)
 	end
@@ -89,7 +89,7 @@ end
 --       Do not call this method directly
 function ItemBase.SetPullout(self, pullout)
 	self.pullout = pullout
-
+
 	self.frame:SetParent(nil)
 	self.frame:SetParent(pullout.itemFrame)
 	self.parent = pullout.itemFrame
@@ -155,12 +155,12 @@ function ItemBase.Create(type)
 	self.frame = frame
 	frame.obj = self
 	self.type = type
-
+
 	self.useHighlight = true
-
+
 	frame:SetHeight(17)
 	frame:SetFrameStrata("FULLSCREEN_DIALOG")
-
+
 	local text = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall")
 	text:SetTextColor(1,1,1)
 	text:SetJustifyH("LEFT")
@@ -169,7 +169,7 @@ function ItemBase.Create(type)
 	self.text = text

 	local highlight = frame:CreateTexture(nil, "OVERLAY")
-	highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight")
+	highlight:SetTexture(136810) -- Interface\\QuestFrame\\UI-QuestTitleHighlight
 	highlight:SetBlendMode("ADD")
 	highlight:SetHeight(14)
 	highlight:ClearAllPoints()
@@ -178,11 +178,11 @@ function ItemBase.Create(type)
 	highlight:Hide()
 	self.highlight = highlight

-	local check = frame:CreateTexture("OVERLAY")
+	local check = frame:CreateTexture("OVERLAY")
 	check:SetWidth(16)
 	check:SetHeight(16)
 	check:SetPoint("LEFT",frame,"LEFT",3,-1)
-	check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
+	check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check
 	check:Hide()
 	self.check = check

@@ -190,28 +190,28 @@ function ItemBase.Create(type)
 	sub:SetWidth(16)
 	sub:SetHeight(16)
 	sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1)
-	sub:SetTexture("Interface\\ChatFrame\\ChatFrameExpandArrow")
+	sub:SetTexture(130940) -- Interface\\ChatFrame\\ChatFrameExpandArrow
 	sub:Hide()
-	self.sub = sub
-
+	self.sub = sub
+
 	frame:SetScript("OnEnter", ItemBase.Frame_OnEnter)
 	frame:SetScript("OnLeave", ItemBase.Frame_OnLeave)
-
+
 	self.OnAcquire = ItemBase.OnAcquire
 	self.OnRelease = ItemBase.OnRelease
-
+
 	self.SetPullout = ItemBase.SetPullout
 	self.GetText    = ItemBase.GetText
 	self.SetText    = ItemBase.SetText
 	self.SetDisabled = ItemBase.SetDisabled
-
+
 	self.SetPoint   = ItemBase.SetPoint
 	self.Show       = ItemBase.Show
 	self.Hide       = ItemBase.Hide
-
+
 	self.SetOnLeave = ItemBase.SetOnLeave
 	self.SetOnEnter = ItemBase.SetOnEnter
-
+
 	return self
 end

@@ -223,20 +223,20 @@ end

 --[[
 	Template for items:
-
+
 -- Item:
 --
 do
 	local widgetType = "Dropdown-Item-"
 	local widgetVersion = 1
-
+
 	local function Constructor()
 		local self = ItemBase.Create(widgetType)
-
+
 		AceGUI:RegisterAsWidget(self)
 		return self
 	end
-
+
 	AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version)
 end
 --]]
@@ -247,25 +247,25 @@ end
 do
 	local widgetType = "Dropdown-Item-Header"
 	local widgetVersion = 1
-
+
 	local function OnEnter(this)
 		local self = this.obj
 		self:Fire("OnEnter")
-
+
 		if self.specialOnEnter then
 			self.specialOnEnter(self)
 		end
 	end
-
+
 	local function OnLeave(this)
 		local self = this.obj
 		self:Fire("OnLeave")
-
+
 		if self.specialOnLeave then
 			self.specialOnLeave(self)
 		end
 	end
-
+
 	-- exported, override
 	local function SetDisabled(self, disabled)
 		ItemBase.SetDisabled(self, disabled)
@@ -273,21 +273,21 @@ do
 			self.text:SetTextColor(1, 1, 0)
 		end
 	end
-
+
 	local function Constructor()
 		local self = ItemBase.Create(widgetType)
-
+
 		self.SetDisabled = SetDisabled
-
+
 		self.frame:SetScript("OnEnter", OnEnter)
 		self.frame:SetScript("OnLeave", OnLeave)
-
+
 		self.text:SetTextColor(1, 1, 0)
-
+
 		AceGUI:RegisterAsWidget(self)
 		return self
 	end
-
+
 	AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version)
 end

@@ -296,7 +296,7 @@ end
 do
 	local widgetType = "Dropdown-Item-Execute"
 	local widgetVersion = 1
-
+
 	local function Frame_OnClick(this, button)
 		local self = this.obj
 		if self.disabled then return end
@@ -305,16 +305,16 @@ do
 			self.pullout:Close()
 		end
 	end
-
+
 	local function Constructor()
 		local self = ItemBase.Create(widgetType)
-
+
 		self.frame:SetScript("OnClick", Frame_OnClick)
-
+
 		AceGUI:RegisterAsWidget(self)
 		return self
 	end
-
+
 	AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version)
 end

@@ -324,7 +324,7 @@ end
 do
 	local widgetType = "Dropdown-Item-Toggle"
 	local widgetVersion = 4
-
+
 	local function UpdateToggle(self)
 		if self.value then
 			self.check:Show()
@@ -332,12 +332,12 @@ do
 			self.check:Hide()
 		end
 	end
-
+
 	local function OnRelease(self)
 		ItemBase.OnRelease(self)
 		self:SetValue(nil)
 	end
-
+
 	local function Frame_OnClick(this, button)
 		local self = this.obj
 		if self.disabled then return end
@@ -350,31 +350,31 @@ do
 		UpdateToggle(self)
 		self:Fire("OnValueChanged", self.value)
 	end
-
+
 	-- exported
 	local function SetValue(self, value)
 		self.value = value
 		UpdateToggle(self)
 	end
-
+
 	-- exported
 	local function GetValue(self)
 		return self.value
 	end
-
+
 	local function Constructor()
 		local self = ItemBase.Create(widgetType)
-
+
 		self.frame:SetScript("OnClick", Frame_OnClick)
-
+
 		self.SetValue = SetValue
 		self.GetValue = GetValue
 		self.OnRelease = OnRelease
-
+
 		AceGUI:RegisterAsWidget(self)
 		return self
 	end
-
+
 	AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version)
 end

@@ -384,55 +384,55 @@ end
 do
 	local widgetType = "Dropdown-Item-Menu"
 	local widgetVersion = 2
-
+
 	local function OnEnter(this)
 		local self = this.obj
 		self:Fire("OnEnter")
-
+
 		if self.specialOnEnter then
 			self.specialOnEnter(self)
 		end
-
+
 		self.highlight:Show()
-
+
 		if not self.disabled and self.submenu then
 			self.submenu:Open("TOPLEFT", self.frame, "TOPRIGHT", self.pullout:GetRightBorderWidth(), 0, self.frame:GetFrameLevel() + 100)
 		end
 	end
-
+
 	local function OnHide(this)
 		local self = this.obj
 		if self.submenu then
 			self.submenu:Close()
 		end
 	end
-
+
 	-- exported
 	local function SetMenu(self, menu)
 		assert(menu.type == "Dropdown-Pullout")
 		self.submenu = menu
 	end
-
+
 	-- exported
 	local function CloseMenu(self)
 		self.submenu:Close()
 	end
-
+
 	local function Constructor()
 		local self = ItemBase.Create(widgetType)
-
+
 		self.sub:Show()
-
+
 		self.frame:SetScript("OnEnter", OnEnter)
 		self.frame:SetScript("OnHide", OnHide)
-
+
 		self.SetMenu   = SetMenu
 		self.CloseMenu = CloseMenu
-
+
 		AceGUI:RegisterAsWidget(self)
 		return self
 	end
-
+
 	AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version)
 end

@@ -441,31 +441,31 @@ end
 do
 	local widgetType = "Dropdown-Item-Separator"
 	local widgetVersion = 2
-
+
 	-- exported, override
 	local function SetDisabled(self, disabled)
 		ItemBase.SetDisabled(self, disabled)
 		self.useHighlight = false
 	end
-
+
 	local function Constructor()
 		local self = ItemBase.Create(widgetType)
-
+
 		self.SetDisabled = SetDisabled
-
+
 		local line = self.frame:CreateTexture(nil, "OVERLAY")
 		line:SetHeight(1)
 		line:SetColorTexture(.5, .5, .5)
 		line:SetPoint("LEFT", self.frame, "LEFT", 10, 0)
 		line:SetPoint("RIGHT", self.frame, "RIGHT", -10, 0)
-
+
 		self.text:Hide()
-
+
 		self.useHighlight = false
-
+
 		AceGUI:RegisterAsWidget(self)
 		return self
 	end
-
+
 	AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version)
 end
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
index 93c93df..94c5ded 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
@@ -1,9 +1,9 @@
---[[ $Id: AceGUIWidget-DropDown.lua 1167 2017-08-29 22:08:48Z funkydude $ ]]--
+--[[ $Id: AceGUIWidget-DropDown.lua 1239 2020-09-20 10:22:02Z nevcairiel $ ]]--
 local AceGUI = LibStub("AceGUI-3.0")

 -- Lua APIs
 local min, max, floor = math.min, math.max, math.floor
-local select, pairs, ipairs, type = select, pairs, ipairs, type
+local select, pairs, ipairs, type, tostring = select, pairs, ipairs, type, tostring
 local tsort = table.sort

 -- WoW APIs
@@ -39,10 +39,10 @@ end

 do
 	local widgetType = "Dropdown-Pullout"
-	local widgetVersion = 3
-
+	local widgetVersion = 5
+
 	--[[ Static data ]]--
-
+
 	local backdrop = {
 		bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
 		edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border",
@@ -60,9 +60,9 @@ do

 	local defaultWidth = 200
 	local defaultMaxHeight = 600
-
+
 	--[[ UI Event Handlers ]]--
-
+
 	-- HACK: This should be no part of the pullout, but there
 	--       is no other 'clean' way to response to any item-OnEnter
 	--       Used to close Submenus when an other item is entered
@@ -74,22 +74,22 @@ do
 			end
 		end
 	end
-
+
 	-- See the note in Constructor() for each scroll related function
 	local function OnMouseWheel(this, value)
 		this.obj:MoveScroll(value)
 	end
-
+
 	local function OnScrollValueChanged(this, value)
 		this.obj:SetScroll(value)
 	end
-
+
 	local function OnSizeChanged(this)
 		this.obj:FixScroll()
 	end
-
+
 	--[[ Exported methods ]]--
-
+
 	-- exported
 	local function SetScroll(self, value)
 		local status = self.scrollStatus
@@ -106,9 +106,9 @@ do
 		child:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, offset)
 		child:SetPoint("TOPRIGHT", frame, "TOPRIGHT", self.slider:IsShown() and -12 or 0, offset)
 		status.offset = offset
-		status.scrollvalue = value
+		status.scrollvalue = value
 	end
-
+
 	-- exported
 	local function MoveScroll(self, value)
 		local status = self.scrollStatus
@@ -127,7 +127,7 @@ do
 			self.slider:SetValue(min(max(status.scrollvalue + delta*(1000/(diff/45)),0), 1000))
 		end
 	end
-
+
 	-- exported
 	local function FixScroll(self)
 		local status = self.scrollStatus
@@ -140,7 +140,7 @@ do
 			child:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 0, offset)
 			self.slider:SetValue(0)
 		else
-			self.slider:Show()
+			self.slider:Show()
 			local value = (offset / (viewheight - height) * 1000)
 			if value > 1000 then value = 1000 end
 			self.slider:SetValue(value)
@@ -153,68 +153,63 @@ do
 			end
 		end
 	end
-
+
 	-- exported, AceGUI callback
 	local function OnAcquire(self)
 		self.frame:SetParent(UIParent)
 		--self.itemFrame:SetToplevel(true)
 	end
-
+
 	-- exported, AceGUI callback
 	local function OnRelease(self)
 		self:Clear()
 		self.frame:ClearAllPoints()
 		self.frame:Hide()
 	end
-
+
 	-- exported
 	local function AddItem(self, item)
 		self.items[#self.items + 1] = item
-
+
 		local h = #self.items * 16
 		self.itemFrame:SetHeight(h)
 		self.frame:SetHeight(min(h + 34, self.maxHeight)) -- +34: 20 for scrollFrame placement (10 offset) and +14 for item placement
-
+
 		item.frame:SetPoint("LEFT", self.itemFrame, "LEFT")
 		item.frame:SetPoint("RIGHT", self.itemFrame, "RIGHT")
-
+
 		item:SetPullout(self)
 		item:SetOnEnter(OnEnter)
 	end
-
+
 	-- exported
-	local function Open(self, point, relFrame, relPoint, x, y)
+	local function Open(self, point, relFrame, relPoint, x, y)
 		local items = self.items
 		local frame = self.frame
 		local itemFrame = self.itemFrame
-
+
 		frame:SetPoint(point, relFrame, relPoint, x, y)

-
+
 		local height = 8
 		for i, item in pairs(items) do
-			if i == 1 then
-				item:SetPoint("TOP", itemFrame, "TOP", 0, -2)
-			else
-				item:SetPoint("TOP", items[i-1].frame, "BOTTOM", 0, 1)
-			end
-
+			item:SetPoint("TOP", itemFrame, "TOP", 0, -2 + (i - 1) * -16)
 			item:Show()
-
+
 			height = height + 16
 		end
 		itemFrame:SetHeight(height)
 		fixstrata("TOOLTIP", frame, frame:GetChildren())
 		frame:Show()
 		self:Fire("OnOpen")
-	end
-
+	end
+
 	-- exported
 	local function Close(self)
 		self.frame:Hide()
 		self:Fire("OnClose")
-	end
-
+	end
+
 	-- exported
 	local function Clear(self)
 		local items = self.items
@@ -222,18 +217,18 @@ do
 			AceGUI:Release(item)
 			items[i] = nil
 		end
-	end
-
+	end
+
 	-- exported
 	local function IterateItems(self)
 		return ipairs(self.items)
 	end
-
+
 	-- exported
 	local function SetHideOnLeave(self, val)
 		self.hideOnLeave = val
 	end
-
+
 	-- exported
 	local function SetMaxHeight(self, height)
 		self.maxHeight = height or defaultMaxHeight
@@ -243,28 +238,28 @@ do
 			self.frame:SetHeight(self.itemFrame:GetHeight() + 34) -- see :AddItem
 		end
 	end
-
+
 	-- exported
 	local function GetRightBorderWidth(self)
 		return 6 + (self.slider:IsShown() and 12 or 0)
 	end
-
+
 	-- exported
 	local function GetLeftBorderWidth(self)
 		return 6
 	end
-
+
 	--[[ Constructor ]]--
-
+
 	local function Constructor()
 		local count = AceGUI:GetNextWidgetNum(widgetType)
-		local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent)
+		local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
 		local self = {}
 		self.count = count
 		self.type = widgetType
 		self.frame = frame
 		frame.obj = self
-
+
 		self.OnAcquire = OnAcquire
 		self.OnRelease = OnRelease

@@ -278,38 +273,38 @@ do
 		self.SetScroll  = SetScroll
 		self.MoveScroll = MoveScroll
 		self.FixScroll  = FixScroll
-
+
 		self.SetMaxHeight = SetMaxHeight
 		self.GetRightBorderWidth = GetRightBorderWidth
 		self.GetLeftBorderWidth = GetLeftBorderWidth
-
+
 		self.items = {}
-
+
 		self.scrollStatus = {
 			scrollvalue = 0,
 		}
-
+
 		self.maxHeight = defaultMaxHeight
-
+
 		frame:SetBackdrop(backdrop)
 		frame:SetBackdropColor(0, 0, 0)
 		frame:SetFrameStrata("FULLSCREEN_DIALOG")
 		frame:SetClampedToScreen(true)
 		frame:SetWidth(defaultWidth)
-		frame:SetHeight(self.maxHeight)
+		frame:SetHeight(self.maxHeight)
 		--frame:SetToplevel(true)
-
+
 		-- NOTE: The whole scroll frame code is copied from the AceGUI-3.0 widget ScrollFrame
 		local scrollFrame = CreateFrame("ScrollFrame", nil, frame)
 		local itemFrame = CreateFrame("Frame", nil, scrollFrame)
-
+
 		self.scrollFrame = scrollFrame
 		self.itemFrame = itemFrame
-
+
 		scrollFrame.obj = self
 		itemFrame.obj = self
-
-		local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame)
+
+		local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 		slider:SetOrientation("VERTICAL")
 		slider:SetHitRectInsets(0, 0, -10, 0)
 		slider:SetBackdrop(sliderBackdrop)
@@ -318,7 +313,7 @@ do
 		slider:SetFrameStrata("FULLSCREEN_DIALOG")
 		self.slider = slider
 		slider.obj = self
-
+
 		scrollFrame:SetScrollChild(itemFrame)
 		scrollFrame:SetPoint("TOPLEFT", frame, "TOPLEFT", 6, -12)
 		scrollFrame:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -6, 12)
@@ -327,46 +322,46 @@ do
 		scrollFrame:SetScript("OnSizeChanged", OnSizeChanged)
 		scrollFrame:SetToplevel(true)
 		scrollFrame:SetFrameStrata("FULLSCREEN_DIALOG")
-
+
 		itemFrame:SetPoint("TOPLEFT", scrollFrame, "TOPLEFT", 0, 0)
 		itemFrame:SetPoint("TOPRIGHT", scrollFrame, "TOPRIGHT", -12, 0)
 		itemFrame:SetHeight(400)
 		itemFrame:SetToplevel(true)
 		itemFrame:SetFrameStrata("FULLSCREEN_DIALOG")
-
+
 		slider:SetPoint("TOPLEFT", scrollFrame, "TOPRIGHT", -16, 0)
 		slider:SetPoint("BOTTOMLEFT", scrollFrame, "BOTTOMRIGHT", -16, 0)
 		slider:SetScript("OnValueChanged", OnScrollValueChanged)
 		slider:SetMinMaxValues(0, 1000)
 		slider:SetValueStep(1)
 		slider:SetValue(0)
-
+
 		scrollFrame:Show()
 		itemFrame:Show()
 		slider:Hide()
-
+
 		self:FixScroll()
-
+
 		AceGUI:RegisterAsWidget(self)
 		return self
 	end
-
+
 	AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion)
 end

 do
 	local widgetType = "Dropdown"
-	local widgetVersion = 31
-
+	local widgetVersion = 35
+
 	--[[ Static data ]]--
-
+
 	--[[ UI event handler ]]--
-
+
 	local function Control_OnEnter(this)
 		this.obj.button:LockHighlight()
 		this.obj:Fire("OnEnter")
 	end
-
+
 	local function Control_OnLeave(this)
 		this.obj.button:UnlockHighlight()
 		this.obj:Fire("OnLeave")
@@ -378,7 +373,7 @@ do
 			self.pullout:Close()
 		end
 	end
-
+
 	local function Dropdown_TogglePullout(this)
 		local self = this.obj
 		PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON
@@ -393,17 +388,17 @@ do
 			AceGUI:SetFocus(self)
 		end
 	end
-
+
 	local function OnPulloutOpen(this)
 		local self = this.userdata.obj
 		local value = self.value
-
+
 		if not self.multiselect then
 			for i, item in this:IterateItems() do
 				item:SetValue(item.userdata.value == value)
 			end
 		end
-
+
 		self.open = true
 		self:Fire("OnOpened")
 	end
@@ -413,7 +408,7 @@ do
 		self.open = nil
 		self:Fire("OnClosed")
 	end
-
+
 	local function ShowMultiText(self)
 		local text
 		for i, widget in self.pullout:IterateItems() do
@@ -429,10 +424,10 @@ do
 		end
 		self:SetText(text)
 	end
-
+
 	local function OnItemValueChanged(this, event, checked)
 		local self = this.userdata.obj
-
+
 		if self.multiselect then
 			self:Fire("OnValueChanged", this.userdata.value, checked)
 			ShowMultiText(self)
@@ -443,14 +438,14 @@ do
 			else
 				this:SetValue(true)
 			end
-			if self.open then
+			if self.open then
 				self.pullout:Close()
 			end
 		end
 	end
-
+
 	--[[ Exported methods ]]--
-
+
 	-- exported, AceGUI callback
 	local function OnAcquire(self)
 		local pullout = AceGUI:Create("Dropdown-Pullout")
@@ -460,13 +455,14 @@ do
 		pullout:SetCallback("OnOpen", OnPulloutOpen)
 		self.pullout.frame:SetFrameLevel(self.frame:GetFrameLevel() + 1)
 		fixlevels(self.pullout.frame, self.pullout.frame:GetChildren())
-
+
 		self:SetHeight(44)
 		self:SetWidth(200)
 		self:SetLabel()
 		self:SetPulloutWidth(nil)
+		self.list = {}
 	end
-
+
 	-- exported, AceGUI callback
 	local function OnRelease(self)
 		if self.open then
@@ -474,20 +470,20 @@ do
 		end
 		AceGUI:Release(self.pullout)
 		self.pullout = nil
-
+
 		self:SetText("")
 		self:SetDisabled(false)
 		self:SetMultiselect(false)
-
+
 		self.value = nil
 		self.list = nil
 		self.open = nil
 		self.hasClose = nil
-
+
 		self.frame:ClearAllPoints()
 		self.frame:Hide()
 	end
-
+
 	-- exported
 	local function SetDisabled(self, disabled)
 		self.disabled = disabled
@@ -503,19 +499,19 @@ do
 			self.text:SetTextColor(1,1,1)
 		end
 	end
-
+
 	-- exported
 	local function ClearFocus(self)
 		if self.open then
 			self.pullout:Close()
 		end
 	end
-
+
 	-- exported
 	local function SetText(self, text)
 		self.text:SetText(text or "")
 	end
-
+
 	-- exported
 	local function SetLabel(self, text)
 		if text and text ~= "" then
@@ -532,20 +528,18 @@ do
 			self.alignoffset = 12
 		end
 	end
-
+
 	-- exported
 	local function SetValue(self, value)
-		if self.list then
-			self:SetText(self.list[value] or "")
-		end
+		self:SetText(self.list[value] or "")
 		self.value = value
 	end
-
+
 	-- exported
 	local function GetValue(self)
 		return self.value
 	end
-
+
 	-- exported
 	local function SetItemValue(self, item, value)
 		if not self.multiselect then return end
@@ -558,7 +552,7 @@ do
 		end
 		ShowMultiText(self)
 	end
-
+
 	-- exported
 	local function SetItemDisabled(self, item, disabled)
 		for i, widget in self.pullout:IterateItems() do
@@ -567,7 +561,7 @@ do
 			end
 		end
 	end
-
+
 	local function AddListItem(self, value, text, itemType)
 		if not itemType then itemType = "Dropdown-Item-Toggle" end
 		local exists = AceGUI:GetWidgetVersion(itemType)
@@ -580,7 +574,7 @@ do
 		item:SetCallback("OnValueChanged", OnItemValueChanged)
 		self.pullout:AddItem(item)
 	end
-
+
 	local function AddCloseButton(self)
 		if not self.hasClose then
 			local close = AceGUI:Create("Dropdown-Item-Execute")
@@ -589,21 +583,29 @@ do
 			self.hasClose = true
 		end
 	end
-
+
 	-- exported
 	local sortlist = {}
+	local function sortTbl(x,y)
+		local num1, num2 = tonumber(x), tonumber(y)
+		if num1 and num2 then -- numeric comparison, either two numbers or numeric strings
+			return num1 < num2
+		else -- compare everything else tostring'ed
+			return tostring(x) < tostring(y)
+		end
+	end
 	local function SetList(self, list, order, itemType)
-		self.list = list
+		self.list = list or {}
 		self.pullout:Clear()
 		self.hasClose = nil
 		if not list then return end
-
+
 		if type(order) ~= "table" then
 			for v in pairs(list) do
 				sortlist[#sortlist + 1] = v
 			end
-			tsort(sortlist)
-
+			tsort(sortlist, sortTbl)
+
 			for i, key in ipairs(sortlist) do
 				AddListItem(self, key, list[key], itemType)
 				sortlist[i] = nil
@@ -618,15 +620,13 @@ do
 			AddCloseButton(self)
 		end
 	end
-
+
 	-- exported
 	local function AddItem(self, value, text, itemType)
-		if self.list then
-			self.list[value] = text
-			AddListItem(self, value, text, itemType)
-		end
+		self.list[value] = text
+		AddListItem(self, value, text, itemType)
 	end
-
+
 	-- exported
 	local function SetMultiselect(self, multi)
 		self.multiselect = multi
@@ -635,23 +635,23 @@ do
 			AddCloseButton(self)
 		end
 	end
-
+
 	-- exported
 	local function GetMultiselect(self)
 		return self.multiselect
 	end
-
+
 	local function SetPulloutWidth(self, width)
 		self.pulloutWidth = width
 	end
-
+
 	--[[ Constructor ]]--
-
+
 	local function Constructor()
 		local count = AceGUI:GetNextWidgetNum(widgetType)
 		local frame = CreateFrame("Frame", nil, UIParent)
 		local dropdown = CreateFrame("Frame", "AceGUI30DropDown"..count, frame, "UIDropDownMenuTemplate")
-
+
 		local self = {}
 		self.type = widgetType
 		self.frame = frame
@@ -659,10 +659,10 @@ do
 		self.count = count
 		frame.obj = self
 		dropdown.obj = self
-
+
 		self.OnRelease   = OnRelease
 		self.OnAcquire   = OnAcquire
-
+
 		self.ClearFocus  = ClearFocus

 		self.SetText     = SetText
@@ -677,9 +677,9 @@ do
 		self.SetItemValue = SetItemValue
 		self.SetItemDisabled = SetItemDisabled
 		self.SetPulloutWidth = SetPulloutWidth
-
+
 		self.alignoffset = 26
-
+
 		frame:SetScript("OnHide",Dropdown_OnHide)

 		dropdown:ClearAllPoints()
@@ -690,10 +690,10 @@ do
 		local left = _G[dropdown:GetName() .. "Left"]
 		local middle = _G[dropdown:GetName() .. "Middle"]
 		local right = _G[dropdown:GetName() .. "Right"]
-
+
 		middle:ClearAllPoints()
 		right:ClearAllPoints()
-
+
 		middle:SetPoint("LEFT", left, "RIGHT", 0, 0)
 		middle:SetPoint("RIGHT", right, "LEFT", 0, 0)
 		right:SetPoint("TOPRIGHT", dropdown, "TOPRIGHT", 0, 17)
@@ -704,7 +704,7 @@ do
 		button:SetScript("OnEnter",Control_OnEnter)
 		button:SetScript("OnLeave",Control_OnLeave)
 		button:SetScript("OnClick",Dropdown_TogglePullout)
-
+
 		local button_cover = CreateFrame("BUTTON",nil,self.frame)
 		self.button_cover = button_cover
 		button_cover.obj = self
@@ -713,14 +713,14 @@ do
 		button_cover:SetScript("OnEnter",Control_OnEnter)
 		button_cover:SetScript("OnLeave",Control_OnLeave)
 		button_cover:SetScript("OnClick",Dropdown_TogglePullout)
-
+
 		local text = _G[dropdown:GetName() .. "Text"]
 		self.text = text
 		text.obj = self
 		text:ClearAllPoints()
 		text:SetPoint("RIGHT", right, "RIGHT" ,-43, 2)
 		text:SetPoint("LEFT", left, "LEFT", 25, 2)
-
+
 		local label = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall")
 		label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
 		label:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0)
@@ -732,6 +732,6 @@ do
 		AceGUI:RegisterAsWidget(self)
 		return self
 	end
-
+
 	AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion)
-end
+end
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua
index bf8b2c0..670cd4e 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua
@@ -51,14 +51,14 @@ local function Constructor()
 	left:SetHeight(8)
 	left:SetPoint("LEFT", 3, 0)
 	left:SetPoint("RIGHT", label, "LEFT", -5, 0)
-	left:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
+	left:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
 	left:SetTexCoord(0.81, 0.94, 0.5, 1)

 	local right = frame:CreateTexture(nil, "BACKGROUND")
 	right:SetHeight(8)
 	right:SetPoint("RIGHT", -3, 0)
 	right:SetPoint("LEFT", label, "RIGHT", 5, 0)
-	right:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
+	right:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
 	right:SetTexCoord(0.81, 0.94, 0.5, 1)

 	local widget = {
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua
index fdba650..092697e 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua
@@ -56,7 +56,7 @@ local methods = {
 	["SetImage"] = function(self, path, ...)
 		local image = self.image
 		image:SetTexture(path)
-
+
 		if image:GetTexture() then
 			local n = select("#", ...)
 			if n == 4 or n == 8 then
@@ -118,7 +118,7 @@ local function Constructor()

 	local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
 	highlight:SetAllPoints(image)
-	highlight:SetTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight")
+	highlight:SetTexture(136580) -- Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight
 	highlight:SetTexCoord(0, 1, 0.23, 0.77)
 	highlight:SetBlendMode("ADD")

diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua
index 5ab7fea..76a2cf9 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua
@@ -8,13 +8,6 @@ if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
 -- Lua APIs
 local select, pairs = select, pairs

--- WoW APIs
-local CreateFrame, UIParent = CreateFrame, UIParent
-
--- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
--- List them here for Mikk's FindGlobals script
--- GLOBALS: GameFontHighlightSmall
-
 --[[-----------------------------------------------------------------------------
 Scripts
 -------------------------------------------------------------------------------]]
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua
index e77023a..b195e0c 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua
@@ -2,7 +2,7 @@
 Keybinding Widget
 Set Keybindings in the Config UI.
 -------------------------------------------------------------------------------]]
-local Type, Version = "Keybinding", 25
+local Type, Version = "Keybinding", 26
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -214,7 +214,7 @@ local function Constructor()
 	label:SetJustifyH("CENTER")
 	label:SetHeight(18)

-	local msgframe = CreateFrame("Frame", nil, UIParent)
+	local msgframe = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	msgframe:SetHeight(30)
 	msgframe:SetBackdrop(ControlBackdrop)
 	msgframe:SetBackdropColor(0,0,0)
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua
index cc7c8d5..2cce725 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua
@@ -2,7 +2,7 @@
 Label Widget
 Displays text and optionally an icon.
 -------------------------------------------------------------------------------]]
-local Type, Version = "Label", 24
+local Type, Version = "Label", 27
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -39,25 +39,30 @@ local function UpdateImageAnchor(self)
 			label:SetPoint("TOP", image, "BOTTOM")
 			label:SetPoint("LEFT")
 			label:SetWidth(width)
-			height = image:GetHeight() + label:GetHeight()
+			height = image:GetHeight() + label:GetStringHeight()
 		else
 			-- image on the left
 			image:SetPoint("TOPLEFT")
-			if image:GetHeight() > label:GetHeight() then
+			if image:GetHeight() > label:GetStringHeight() then
 				label:SetPoint("LEFT", image, "RIGHT", 4, 0)
 			else
 				label:SetPoint("TOPLEFT", image, "TOPRIGHT", 4, 0)
 			end
 			label:SetWidth(width - imagewidth - 4)
-			height = max(image:GetHeight(), label:GetHeight())
+			height = max(image:GetHeight(), label:GetStringHeight())
 		end
 	else
 		-- no image shown
 		label:SetPoint("TOPLEFT")
 		label:SetWidth(width)
-		height = label:GetHeight()
+		height = label:GetStringHeight()
 	end
-
+
+	-- avoid zero-height labels, since they can used as spacers
+	if not height or height == 0 then
+		height = 1
+	end
+
 	self.resizing = true
 	frame:SetHeight(height)
 	frame.height = height
@@ -108,7 +113,7 @@ local methods = {
 	["SetImage"] = function(self, path, ...)
 		local image = self.image
 		image:SetTexture(path)
-
+
 		if image:GetTexture() then
 			self.imageshown = true
 			local n = select("#", ...)
@@ -125,6 +130,7 @@ local methods = {

 	["SetFont"] = function(self, font, height, flags)
 		self.label:SetFont(font, height, flags)
+		UpdateImageAnchor(self)
 	end,

 	["SetFontObject"] = function(self, font)
diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua
index c9b0d86..cfcb500 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua
@@ -1,4 +1,4 @@
-local Type, Version = "MultiLineEditBox", 28
+local Type, Version = "MultiLineEditBox", 29
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -233,7 +233,7 @@ local methods = {
 		end
 		Layout(self)
 	end,
-
+
 	["ClearFocus"] = function(self)
 		self.editBox:ClearFocus()
 		self.frame:SetScript("OnShow", nil)
@@ -253,12 +253,12 @@ local methods = {
 	["GetCursorPosition"] = function(self)
 		return self.editBox:GetCursorPosition()
 	end,
-
+
 	["SetCursorPosition"] = function(self, ...)
 		return self.editBox:SetCursorPosition(...)
 	end,
-
-
+
+
 }

 --[[-----------------------------------------------------------------------------
@@ -273,7 +273,7 @@ local backdrop = {
 local function Constructor()
 	local frame = CreateFrame("Frame", nil, UIParent)
 	frame:Hide()
-
+
 	local widgetNum = AceGUI:GetNextWidgetNum(Type)

 	local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
@@ -290,14 +290,14 @@ local function Constructor()
 	button:SetText(ACCEPT)
 	button:SetScript("OnClick", OnClick)
 	button:Disable()
-
+
 	local text = button:GetFontString()
 	text:ClearAllPoints()
 	text:SetPoint("TOPLEFT", button, "TOPLEFT", 5, -5)
 	text:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -5, 1)
 	text:SetJustifyV("MIDDLE")

-	local scrollBG = CreateFrame("Frame", nil, frame)
+	local scrollBG = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	scrollBG:SetBackdrop(backdrop)
 	scrollBG:SetBackdropColor(0, 0, 0)
 	scrollBG:SetBackdropBorderColor(0.4, 0.4, 0.4)
@@ -339,7 +339,7 @@ local function Constructor()
 	editBox:SetScript("OnTextChanged", OnTextChanged)
 	editBox:SetScript("OnTextSet", OnTextSet)
 	editBox:SetScript("OnEditFocusGained", OnEditFocusGained)
-
+

 	scrollFrame:SetScrollChild(editBox)

diff --git a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
index 7466cb1..ea655b6 100755
--- a/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
+++ b/TitanClassic/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
@@ -2,7 +2,7 @@
 Slider Widget
 Graphical Slider, like, for Range values.
 -------------------------------------------------------------------------------]]
-local Type, Version = "Slider", 22
+local Type, Version = "Slider", 23
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -57,10 +57,9 @@ local function Frame_OnMouseDown(frame)
 	AceGUI:ClearFocus()
 end

-local function Slider_OnValueChanged(frame)
+local function Slider_OnValueChanged(frame, newvalue)
 	local self = frame.obj
 	if not frame.setup then
-		local newvalue = frame:GetValue()
 		if self.step and self.step > 0 then
 			local min_value = self.min or 0
 			newvalue = floor((newvalue - min_value) / self.step + 0.5) * self.step + min_value
@@ -106,7 +105,7 @@ local function EditBox_OnEnterPressed(frame)
 	else
 		value = tonumber(value)
 	end
-
+
 	if value then
 		PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON
 		self.slider:SetValue(value)
@@ -226,7 +225,7 @@ local function Constructor()
 	label:SetJustifyH("CENTER")
 	label:SetHeight(15)

-	local slider = CreateFrame("Slider", nil, frame)
+	local slider = CreateFrame("Slider", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	slider:SetOrientation("HORIZONTAL")
 	slider:SetHeight(15)
 	slider:SetHitRectInsets(0, 0, -10, 0)
@@ -248,7 +247,7 @@ local function Constructor()
 	local hightext = slider:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
 	hightext:SetPoint("TOPRIGHT", slider, "BOTTOMRIGHT", -2, 3)

-	local editbox = CreateFrame("EditBox", nil, frame)
+	local editbox = CreateFrame("EditBox", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
 	editbox:SetAutoFocus(false)
 	editbox:SetFontObject(GameFontHighlightSmall)
 	editbox:SetPoint("TOP", slider, "BOTTOM")
diff --git a/TitanClassicAmmo/TitanClassicAmmo.lua b/TitanClassicAmmo/TitanClassicAmmo.lua
index 96cf34d..594bf0c 100644
--- a/TitanClassicAmmo/TitanClassicAmmo.lua
+++ b/TitanClassicAmmo/TitanClassicAmmo.lua
@@ -108,11 +108,6 @@ end

 local function GetAmmoCount()
 	weapon, weapon_type, ammo_type = GetWeaponInfo(rangedSlotID)
---[[
-print("GetAmmoCount"
-.." '"..tostring(weapon).."'"
-)
---]]

 	if IsThrown(ammo_type) then
 		ammo_name = select(1, GetItemInfo(GetInventoryItemID("player", rangedSlotID))) or _G["UNKNOWN"]
@@ -153,13 +148,14 @@ function TitanPanelAmmoButton_OnLoad(self)
 			ShowLabelText = true,
 			ShowRegularText = false,
 			ShowColoredText = true,
-			DisplayOnRightSide = false
+			DisplayOnRightSide = true,
 		},
 		savedVariables = {
 			ShowIcon = 1,
 			ShowLabelText = 1,
 			ShowColoredText = 1,
 			ShowAmmoName = false,
+			DisplayOnRightSide = false,
 		}
 	};

@@ -184,7 +180,7 @@ function TitanPanelAmmoButton_PLAYER_LOGIN()
 	-- Class check
 	if class ~= "ROGUE" and class ~= "WARRIOR" and class ~= "HUNTER" then
 		TitanPanelAmmoButton_PLAYER_LOGIN = nil
-		ClrAmmoInfo()
+		ammo_show = true
 		return
 	end

@@ -261,26 +257,25 @@ function TitanPanelAmmoButton_GetButtonText(id)

 	local labelText, ammoText, ammoRichText, color;

+	if not ammo_count then -- safeguard to prevent malformed labels
+		ClrAmmoInfo()
+	end
+
 	if (IsThrown(ammo_type)) then
 		labelText = L["TITAN_AMMO_BUTTON_LABEL_THROWN"];
 		ammoText = format(L["TITAN_AMMO_FORMAT"], ammo_count);
-		labelText = weapon_type.." : "
 		if TitanGetVar(TITAN_AMMO_ID, "ShowAmmoName") and ammo_name ~= "" then
 			ammoText = ammoText.."|cffffff9a".." ("..ammo_name..")".."|r"
 		end
-	elseif IsAmmo(ammo_type) then
+	else
 		labelText = L["TITAN_AMMO_BUTTON_LABEL_AMMO"];
-		labelText = weapon_type.." : "
 		ammoText = format(L["TITAN_AMMO_FORMAT"], ammo_count);
 		if TitanGetVar(TITAN_AMMO_ID, "ShowAmmoName") and ammo_name ~= "" then
 			ammoText = ammoText.."|cffffff9a".." ("..ammo_name..")".."|r"
 		end
-	else
-		ClrAmmoInfo()
-		ammoText = ammo_name
-		labelText = weapon_type..""
 	end

+	labelText = weapon_type.." : "
 --[[
 print("_GetButtonText"
 .." '"..tostring(weapon_type).."'"
@@ -315,6 +310,7 @@ function TitanPanelRightClickMenu_PrepareAmmoMenu()
 	info.checked = TitanUtils_Ternary(TitanGetVar(TITAN_AMMO_ID, "ShowAmmoName"), 1, nil);
 	L_UIDropDownMenu_AddButton(info);

+	TitanPanelRightClickMenu_AddToggleRightSide(TITAN_AMMO_ID);
 	TitanPanelRightClickMenu_AddSpacer();
 	TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], TITAN_AMMO_ID, TITAN_PANEL_MENU_FUNC_HIDE);
 end
diff --git a/TitanClassicAmmo/TitanClassicAmmo.toc b/TitanClassicAmmo/TitanClassicAmmo.toc
index 060c70a..c6f505a 100644
--- a/TitanClassicAmmo/TitanClassicAmmo.toc
+++ b/TitanClassicAmmo/TitanClassicAmmo.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fAmmo|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fAmmo|r] |cff00aa001.2.8.11306|r
 ## Notes: Adds an ammo monitor to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicAmmo.xml
\ No newline at end of file
diff --git a/TitanClassicBag/TitanClassicBag.lua b/TitanClassicBag/TitanClassicBag.lua
index 79e92e7..b749efe 100644
--- a/TitanClassicBag/TitanClassicBag.lua
+++ b/TitanClassicBag/TitanClassicBag.lua
@@ -266,7 +266,7 @@ function TitanPanelBagButton_OnLoad(self)
 			ShowLabelText = true,
 			ShowRegularText = false,
 			ShowColoredText = true,
-			DisplayOnRightSide = false
+			DisplayOnRightSide = true
 		},
 		savedVariables = {
 			ShowUsedSlots = 1,
@@ -277,6 +277,7 @@ function TitanPanelBagButton_OnLoad(self)
 			ShowIcon = 1,
 			ShowLabelText = 1,
 			ShowColoredText = 1,
+			DisplayOnRightSide = false
 		}
 	};

@@ -521,6 +522,7 @@ function TitanPanelRightClickMenu_PrepareBagMenu()
 	TitanPanelRightClickMenu_AddToggleIcon(TITAN_BAG_ID);
 	TitanPanelRightClickMenu_AddToggleLabelText(TITAN_BAG_ID);
 	TitanPanelRightClickMenu_AddToggleColoredText(TITAN_BAG_ID);
+	TitanPanelRightClickMenu_AddToggleRightSide(TITAN_BAG_ID);
 	TitanPanelRightClickMenu_AddSpacer();
 	TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], TITAN_BAG_ID, TITAN_PANEL_MENU_FUNC_HIDE);
 end
diff --git a/TitanClassicBag/TitanClassicBag.toc b/TitanClassicBag/TitanClassicBag.toc
index e21a686..c8adbbc 100644
--- a/TitanClassicBag/TitanClassicBag.toc
+++ b/TitanClassicBag/TitanClassicBag.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fBag|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fBag|r] |cff00aa001.2.8.11306|r
 ## Notes: Adds bag and free slot information to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicBag.xml
diff --git a/TitanClassicClock/TitanClassicClock.lua b/TitanClassicClock/TitanClassicClock.lua
index 11d75ee..825c0cf 100644
--- a/TitanClassicClock/TitanClassicClock.lua
+++ b/TitanClassicClock/TitanClassicClock.lua
@@ -417,8 +417,8 @@ end
 -- **************************************************************************
 function TitanPanelClockControlFrame_OnLoad(self)
 	_G[self:GetName().."Title"]:SetText(L["TITAN_CLOCK_CONTROL_TITLE"]);
-	self:SetBackdropBorderColor(1, 1, 1);
-	self:SetBackdropColor(0, 0, 0, 1);
+--	self:SetBackdropBorderColor(1, 1, 1);
+--	self:SetBackdropColor(0, 0, 0, 1);
 end

 -- **************************************************************************
@@ -471,6 +471,7 @@ function TitanPanelRightClickMenu_PrepareClockMenu()
 	info.keepShownOnClick = 1;
 	L_UIDropDownMenu_AddButton(info);

+	TitanPanelRightClickMenu_AddSpacer();
 	info = {};
 	info.text = L["TITAN_CLOCK_MENU_DISPLAY_ON_RIGHT_SIDE"];
 	info.func = TitanPanelClockButton_ToggleRightSideDisplay;
diff --git a/TitanClassicClock/TitanClassicClock.toc b/TitanClassicClock/TitanClassicClock.toc
index 58ca489..ee0a922 100644
--- a/TitanClassicClock/TitanClassicClock.toc
+++ b/TitanClassicClock/TitanClassicClock.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fClock|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fClock|r] |cff00aa001.2.8.11306|r
 ## Notes: Adds a clock to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicClock.xml
diff --git a/TitanClassicGold/TitanClassicGold.lua b/TitanClassicGold/TitanClassicGold.lua
index 97a883d..4385ac4 100644
--- a/TitanClassicGold/TitanClassicGold.lua
+++ b/TitanClassicGold/TitanClassicGold.lua
@@ -175,7 +175,7 @@ function TitanPanelGoldButton_OnLoad(self)
 			ShowLabelText =true,
 			ShowRegularText = false,
 			ShowColoredText = false,
-			DisplayOnRightSide = false
+			DisplayOnRightSide = true,
 		},
 		savedVariables = {
 			Initialized = true,
@@ -194,6 +194,7 @@ function TitanPanelGoldButton_OnLoad(self)
 			MergeServers = false,
 			SeparateServers = true,
 			gold = { total = "112233", neg = false },
+			DisplayOnRightSide = false,
 		}
 	};

@@ -723,6 +724,7 @@ function TitanPanelRightClickMenu_PrepareGoldMenu()
 		TitanPanelRightClickMenu_AddToggleIcon(TITAN_GOLD_ID);
 		TitanPanelRightClickMenu_AddToggleLabelText(TITAN_GOLD_ID);
 		TitanPanelRightClickMenu_AddToggleColoredText(TITAN_GOLD_ID);
+		TitanPanelRightClickMenu_AddToggleRightSide(TITAN_GOLD_ID);
 		TitanPanelRightClickMenu_AddSpacer();

 		-- Generic function to toggle and hide
diff --git a/TitanClassicGold/TitanClassicGold.toc b/TitanClassicGold/TitanClassicGold.toc
index 038b172..ee8d0ef 100644
--- a/TitanClassicGold/TitanClassicGold.toc
+++ b/TitanClassicGold/TitanClassicGold.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fGold|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fGold|r] |cff00aa001.2.8.11306|r
 ## Notes: Keeps track of all gold held by a player's toons on a per server/faction basis.
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables: GoldSave
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicGold.xml
diff --git a/TitanClassicLocation/TitanClassicLocation.lua b/TitanClassicLocation/TitanClassicLocation.lua
index 8aadfe8..fd63733 100755
--- a/TitanClassicLocation/TitanClassicLocation.lua
+++ b/TitanClassicLocation/TitanClassicLocation.lua
@@ -38,7 +38,7 @@ function TitanPanelLocationButton_OnLoad(self)
 			ShowLabelText = true,
 			ShowRegularText = false,
 			ShowColoredText = true,
-			DisplayOnRightSide = false
+			DisplayOnRightSide = true,
 		},
 		savedVariables = {
 			ShowZoneText = 1,
@@ -54,6 +54,7 @@ function TitanPanelLocationButton_OnLoad(self)
 			CoordsFormat3 = false,
 			UpdateWorldmap = false,
 			MapLocation = false,
+			DisplayOnRightSide = false,
 		}
 	};

@@ -432,6 +433,7 @@ function TitanPanelRightClickMenu_PrepareLocationMenu()
 	TitanPanelRightClickMenu_AddToggleIcon(TITAN_LOCATION_ID);
 	TitanPanelRightClickMenu_AddToggleLabelText(TITAN_LOCATION_ID);
 	TitanPanelRightClickMenu_AddToggleColoredText(TITAN_LOCATION_ID);
+	TitanPanelRightClickMenu_AddToggleRightSide(TITAN_LOCATION_ID);
 	TitanPanelRightClickMenu_AddSpacer();
 	TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], TITAN_LOCATION_ID, TITAN_PANEL_MENU_FUNC_HIDE);
 end
diff --git a/TitanClassicLocation/TitanClassicLocation.toc b/TitanClassicLocation/TitanClassicLocation.toc
index dc90839..7070f18 100644
--- a/TitanClassicLocation/TitanClassicLocation.toc
+++ b/TitanClassicLocation/TitanClassicLocation.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fLocation|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fLocation|r] |cff00aa001.2.8.11306|r
 ## Notes: Adds coordinates and location information to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicLocation.xml
diff --git a/TitanClassicLootType/TitanClassicLootType.lua b/TitanClassicLootType/TitanClassicLootType.lua
index 68442b7..2c2ae08 100644
--- a/TitanClassicLootType/TitanClassicLootType.lua
+++ b/TitanClassicLootType/TitanClassicLootType.lua
@@ -1413,13 +1413,14 @@ function TitanPanelLootTypeButton_OnLoad(self)
 			ShowLabelText = true,
 			ShowRegularText = false,
 			ShowColoredText = false,
-			DisplayOnRightSide = false
+			DisplayOnRightSide = true,
 		},
 		savedVariables = {
 			ShowIcon = 1,
 			ShowLabelText = 1,
 			RandomRoll = 100,
 			DB = {},
+			DisplayOnRightSide = false,
 --			ShowDungeonDiff = false,
 --			DungeonDiffType = "AUTO",
 		}
@@ -1541,7 +1542,7 @@ function TitanPanelRightClickMenu_PrepareLootTypeMenu()

 	TitanPanelRightClickMenu_AddToggleIcon(TITAN_LOOTTYPE_ID);
 	TitanPanelRightClickMenu_AddToggleLabelText(TITAN_LOOTTYPE_ID);
-
+	TitanPanelRightClickMenu_AddToggleRightSide(TITAN_LOOTTYPE_ID);
 	TitanPanelRightClickMenu_AddSpacer();
 	TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], TITAN_LOOTTYPE_ID, TITAN_PANEL_MENU_FUNC_HIDE);
 end
diff --git a/TitanClassicLootType/TitanClassicLootType.toc b/TitanClassicLootType/TitanClassicLootType.toc
index d3deb0a..a10c6fa 100644
--- a/TitanClassicLootType/TitanClassicLootType.toc
+++ b/TitanClassicLootType/TitanClassicLootType.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fLootType|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fLootType|r] |cff00aa001.2.8.11306|r
 ## Notes: Adds group loot and instance difficulty information to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables: TitanClassicLootTypeSaved
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicLootType.xml
diff --git a/TitanClassicPerformance/TitanClassicPerformance.lua b/TitanClassicPerformance/TitanClassicPerformance.lua
index 51d176c..d1a8c04 100644
--- a/TitanClassicPerformance/TitanClassicPerformance.lua
+++ b/TitanClassicPerformance/TitanClassicPerformance.lua
@@ -371,8 +371,9 @@ function TitanPanelPerformanceButton_SetTooltip()
 	-- Tooltip title
 	GameTooltip:SetText(L["TITAN_PERFORMANCE_TOOLTIP"], HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);

+-- Ticket 48 : Request to always show info in the tooltip. Does NOT include addon info as that is tooltip only
 	-- FPS tooltip
-	if ( showFPS ) then
+--	if ( showFPS ) then
 		local fpsText = format(L["TITAN_FPS_FORMAT"], button.fps);
 		local avgFPSText = format(L["TITAN_FPS_FORMAT"], button.avgFPS);
 		local minFPSText = format(L["TITAN_FPS_FORMAT"], button.minFPS);
@@ -384,10 +385,10 @@ function TitanPanelPerformanceButton_SetTooltip()
 		GameTooltip:AddDoubleLine(L["TITAN_FPS_TOOLTIP_AVG_FPS"], TitanUtils_GetHighlightText(avgFPSText));
 		GameTooltip:AddDoubleLine(L["TITAN_FPS_TOOLTIP_MIN_FPS"], TitanUtils_GetHighlightText(minFPSText));
 		GameTooltip:AddDoubleLine(L["TITAN_FPS_TOOLTIP_MAX_FPS"], TitanUtils_GetHighlightText(maxFPSText));
-	end
+--	end

 	-- Latency tooltip
-	if ( showLatency or showWorldLatency ) then
+--	if ( showLatency or showWorldLatency ) then
 		local latencyText = format(L["TITAN_LATENCY_FORMAT"], button.latencyHome);
 		local latencyWorldText = format(L["TITAN_LATENCY_FORMAT"], button.latencyWorld);
 		local bandwidthInText = format(L["TITAN_LATENCY_BANDWIDTH_FORMAT"], button.bandwidthIn);
@@ -399,10 +400,10 @@ function TitanPanelPerformanceButton_SetTooltip()
 		if showWorldLatency then GameTooltip:AddDoubleLine(L["TITAN_LATENCY_TOOLTIP_LATENCY_WORLD"], TitanUtils_GetHighlightText(latencyWorldText)); end
 		GameTooltip:AddDoubleLine(L["TITAN_LATENCY_TOOLTIP_BANDWIDTH_IN"], TitanUtils_GetHighlightText(bandwidthInText));
 		GameTooltip:AddDoubleLine(L["TITAN_LATENCY_TOOLTIP_BANDWIDTH_OUT"], TitanUtils_GetHighlightText(bandwidthOutText));
-	end
+--	end

 	-- Memory tooltip
-	if ( showMemory ) then
+--	if ( showMemory ) then
 		local memoryText = format(L["TITAN_MEMORY_FORMAT"], button.memory/1024);
 		local initialMemoryText = format(L["TITAN_MEMORY_FORMAT"], button.initialMemory/1024);
 		local sessionTime = time() - button.startSessionTime;
@@ -423,7 +424,7 @@ function TitanPanelPerformanceButton_SetTooltip()
 		GameTooltip:AddDoubleLine(L["TITAN_MEMORY_TOOLTIP_CURRENT_MEMORY"], TitanUtils_GetHighlightText(memoryText));
 		GameTooltip:AddDoubleLine(L["TITAN_MEMORY_TOOLTIP_INITIAL_MEMORY"], TitanUtils_GetHighlightText(initialMemoryText));
 		GameTooltip:AddDoubleLine(L["TITAN_MEMORY_TOOLTIP_INCREASING_RATE"], rateRichText);
-	end
+--	end

 	if ( showAddonMemory == 1 ) then
 		for _,i in pairs(topAddOns) do
@@ -601,6 +602,7 @@ function TitanPanelRightClickMenu_PreparePerformanceMenu()
 	TitanPanelRightClickMenu_AddToggleIcon(TITAN_PERFORMANCE_ID);
 	TitanPanelRightClickMenu_AddToggleLabelText(TITAN_PERFORMANCE_ID);
 	TitanPanelRightClickMenu_AddToggleColoredText(TITAN_PERFORMANCE_ID);
+	TitanPanelRightClickMenu_AddToggleRightSide(TITAN_PERFORMANCE_ID);
 	TitanPanelRightClickMenu_AddSpacer();
 	TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], TITAN_PERFORMANCE_ID, TITAN_PANEL_MENU_FUNC_HIDE);
 end
@@ -618,7 +620,7 @@ function TitanPanelPerformanceButton_UpdateData()
 	local showAddonMemory = TitanGetVar(TITAN_PERFORMANCE_ID, "ShowAddonMemory");

 	-- FPS Data
-	if ( showFPS ) then
+--	if ( showFPS ) then
 		button.fps = GetFramerate();
 		button.fpsSampleCount = button.fpsSampleCount + 1;
 		if (button.fpsSampleCount == 1) then
@@ -633,13 +635,13 @@ function TitanPanelPerformanceButton_UpdateData()
 			end
 			button.avgFPS = (button.avgFPS * (button.fpsSampleCount - 1) + button.fps) / button.fpsSampleCount;
 		end
-	end
+--	end

 	-- Latency Data
-	if ( showLatency or showWorldLatency ) then
+--	if ( showLatency or showWorldLatency ) then
 		-- bandwidthIn, bandwidthOut, latencyHome, latencyWorld = GetNetStats();
 		button.bandwidthIn, button.bandwidthOut, button.latencyHome, button.latencyWorld = GetNetStats();
-	end
+--	end

 	-- Memory data
 	if ( showMemory ) or (showAddonMemory == 1) then
@@ -795,8 +797,8 @@ end
 -- **************************************************************************
 function TitanPanelPerfControlFrame_OnLoad(self)
 	_G[self:GetName().."Title"]:SetText(L["TITAN_PERFORMANCE_CONTROL_TITLE"]);
-	self:SetBackdropBorderColor(1, 1, 1);
-	self:SetBackdropColor(0, 0, 0, 1);
+--	self:SetBackdropBorderColor(1, 1, 1);
+--	self:SetBackdropColor(0, 0, 0, 1);
 end

 -- **************************************************************************
diff --git a/TitanClassicPerformance/TitanClassicPerformance.toc b/TitanClassicPerformance/TitanClassicPerformance.toc
index 57d09ec..fbd82ba 100644
--- a/TitanClassicPerformance/TitanClassicPerformance.toc
+++ b/TitanClassicPerformance/TitanClassicPerformance.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fPerformance|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fPerformance|r] |cff00aa001.2.8.11306|r
 ## Notes: Adds FPS and Garbage collection information to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicPerformance.xml
diff --git a/TitanClassicRegen/TitanClassicRegen.lua b/TitanClassicRegen/TitanClassicRegen.lua
index a4b2de8..079db4b 100644
--- a/TitanClassicRegen/TitanClassicRegen.lua
+++ b/TitanClassicRegen/TitanClassicRegen.lua
@@ -59,14 +59,15 @@ function TitanPanelRegenButton_OnLoad(self)
 			  ShowLabelText = true,
 			  ShowRegularText = false,
 			  ShowColoredText = false,
-			  DisplayOnRightSide = false
+			  DisplayOnRightSide = true,
 		  },
           savedVariables = {
               ShowLabelText = 1,
               ShowHPRegen = 1,
               ShowPercentage = false,
-              ShowColoredText = false
-          }
+              ShowColoredText = false,
+ 			  DisplayOnRightSide = false,
+         }
      };

      self:RegisterEvent("UNIT_HEALTH");
@@ -269,8 +270,8 @@ function TitanPanelRightClickMenu_PrepareRegenMenu()
 	info.func = TitanRegen_ShowColoredText;
 	info.checked = TitanGetVar(TITAN_REGEN_ID, "ShowColoredText");
 	L_UIDropDownMenu_AddButton(info);
-
 	TitanPanelRightClickMenu_AddToggleLabelText("TitanRegen");
+	TitanPanelRightClickMenu_AddToggleRightSide(TITAN_REGEN_ID);
 	TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], id, TITAN_PANEL_MENU_FUNC_HIDE);
 end

diff --git a/TitanClassicRegen/TitanClassicRegen.toc b/TitanClassicRegen/TitanClassicRegen.toc
index acabdc7..8b7cace 100644
--- a/TitanClassicRegen/TitanClassicRegen.toc
+++ b/TitanClassicRegen/TitanClassicRegen.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fRegen|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fRegen|r] |cff00aa001.2.8.11306|r
 ## Notes: Adds a regen monitor to Titan panel to show HP/MANA regen
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicRegen.xml
\ No newline at end of file
diff --git a/TitanClassicRepair/TitanClassicRepair.lua b/TitanClassicRepair/TitanClassicRepair.lua
index e256f74..b33265f 100644
--- a/TitanClassicRepair/TitanClassicRepair.lua
+++ b/TitanClassicRepair/TitanClassicRepair.lua
@@ -94,7 +94,7 @@ function TitanPanelRepairButton_OnLoad(self)
 			ShowLabelText = true,
 			ShowRegularText = false,
 			ShowColoredText = true,
-			DisplayOnRightSide = false
+			DisplayOnRightSide = true,
 		},
 		savedVariables = {
 			ShowIcon = 1,
@@ -119,6 +119,7 @@ function TitanPanelRepairButton_OnLoad(self)
 			ShowItems = true,
 			ShowDiscounts = true,
 			ShowCosts = true,
+			DisplayOnRightSide = false,
 		}
 	};

@@ -1311,6 +1312,7 @@ local info;
 	TitanPanelRightClickMenu_AddToggleIcon(TITAN_REPAIR_ID);
 	TitanPanelRightClickMenu_AddToggleLabelText(TITAN_REPAIR_ID);
 	TitanPanelRightClickMenu_AddToggleColoredText(TITAN_REPAIR_ID);
+	TitanPanelRightClickMenu_AddToggleRightSide(TITAN_REPAIR_ID);
 	TitanPanelRightClickMenu_AddSpacer();
 	TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], TITAN_REPAIR_ID, TITAN_PANEL_MENU_FUNC_HIDE);
 end
diff --git a/TitanClassicRepair/TitanClassicRepair.toc b/TitanClassicRepair/TitanClassicRepair.toc
index 0b853af..571b828 100644
--- a/TitanClassicRepair/TitanClassicRepair.toc
+++ b/TitanClassicRepair/TitanClassicRepair.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fRepair|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fRepair|r] |cff00aa001.2.8.11306|r
 ## Notes: Provides a configurable durability display. Also adds the ability to auto repair items and inventory at vendors
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicRepair.xml
diff --git a/TitanClassicVolume/TitanClassicVolume.lua b/TitanClassicVolume/TitanClassicVolume.lua
index 4fd8695..b654757 100644
--- a/TitanClassicVolume/TitanClassicVolume.lua
+++ b/TitanClassicVolume/TitanClassicVolume.lua
@@ -357,8 +357,8 @@ function TitanPanelVolumeControlFrame_OnLoad(self)
 	_G[self:GetName().."DialogTitle"]:SetText(L["TITAN_VOLUME_DIALOG_CONTROL_TITLE"]);
 --	_G[self:GetName().."MicrophoneTitle"]:SetText(L["TITAN_VOLUME_MICROPHONE_CONTROL_TITLE"]);
 --	_G[self:GetName().."SpeakerTitle"]:SetText(L["TITAN_VOLUME_SPEAKER_CONTROL_TITLE"]);
-	self:SetBackdropBorderColor(1, 1, 1);
-	self:SetBackdropColor(0, 0, 0, 1);
+--	self:SetBackdropBorderColor(1, 1, 1);
+--	self:SetBackdropColor(0, 0, 0, 1);
 end

 function TitanPanelVolumeControlFrame_OnUpdate(self, elapsed)
diff --git a/TitanClassicVolume/TitanClassicVolume.toc b/TitanClassicVolume/TitanClassicVolume.toc
index 08bc6e2..9b22c6d 100644
--- a/TitanClassicVolume/TitanClassicVolume.toc
+++ b/TitanClassicVolume/TitanClassicVolume.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fVolume|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fVolume|r] |cff00aa001.2.8.11306|r
 ## Notes: Adds a volume control icon on your Titan Bar
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicVolume.xml
diff --git a/TitanClassicXP/TitanClassicXP.lua b/TitanClassicXP/TitanClassicXP.lua
index 9b90108..51b4245 100644
--- a/TitanClassicXP/TitanClassicXP.lua
+++ b/TitanClassicXP/TitanClassicXP.lua
@@ -52,7 +52,7 @@ function TitanPanelXPButton_OnLoad(self)
 			ShowLabelText = true,
 			ShowRegularText = false,
 			ShowColoredText = false,
-			DisplayOnRightSide = false
+			DisplayOnRightSide = true,
 		},
 		savedVariables = {
 			DisplayType = "ShowXPPerHourSession",
@@ -64,6 +64,7 @@ function TitanPanelXPButton_OnLoad(self)
 			ShowSimpleNumOfGains = false,
 			UseSeperatorComma = true,
 			UseSeperatorPeriod = false,
+			DisplayOnRightSide = false,
 		}
 	};

@@ -420,6 +421,7 @@ function TitanPanelRightClickMenu_PrepareXPMenu()
 	end
 	L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]);

+	TitanPanelRightClickMenu_AddToggleRightSide(TITAN_XP_ID);
 	TitanPanelRightClickMenu_AddSpacer();
 	TitanPanelRightClickMenu_AddCommand(L["TITAN_PANEL_MENU_HIDE"], TITAN_XP_ID, TITAN_PANEL_MENU_FUNC_HIDE);
 	end
diff --git a/TitanClassicXP/TitanClassicXP.toc b/TitanClassicXP/TitanClassicXP.toc
index 19ccf9c..d4552b6 100644
--- a/TitanClassicXP/TitanClassicXP.toc
+++ b/TitanClassicXP/TitanClassicXP.toc
@@ -1,10 +1,10 @@
-## Interface: 11307
-## Title: Titan Panel Classic [|cffeda55fXP|r] |cff00aa001.2.10.11307|r
+## Interface: 11306
+## Title: Titan Panel Classic [|cffeda55fXP|r] |cff00aa001.2.8.11306|r
 ## Notes: Adds information to Titan Panel about XP earned and time to level
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-## Version: 1.2.10.11307
+## Version: 1.2.8.11306
 ## X-Child-Of: TitanClassic
 TitanClassicXP.xml