Quantcast

-- Changes in prep for DragonFlight.

urnati [10-08-22 - 15:34]
-- Changes in prep for DragonFlight.
-- Handle differences between Beta and PTR
Filename
Titan/LDBToTitan.lua
Titan/Titan.toc
Titan/TitanConfig.lua
Titan/TitanMovable.lua
Titan/TitanPanel.lua
Titan/TitanPanelTemplate.lua
Titan/TitanUtils.lua
Titan/TitanVariables.lua
Titan/libs/AceGUI-3.0/AceGUI-3.0.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua
Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
TitanBag/TitanBag.lua
TitanBag/TitanBag.toc
TitanClock/TitanClock.toc
TitanClock/TitanClock.xml
TitanGold/TitanGold.toc
TitanLocation/TitanLocation.lua
TitanLocation/TitanLocation.toc
TitanLootType/TitanLootType.toc
TitanPerformance/TitanPerformance.toc
TitanRepair/TitanRepair.lua
TitanRepair/TitanRepair.toc
TitanVolume/TitanVolume.lua
TitanVolume/TitanVolume.toc
TitanXP/TitanXP.toc
diff --git a/Titan/LDBToTitan.lua b/Titan/LDBToTitan.lua
index a6d98cb..ee7989c 100644
--- a/Titan/LDBToTitan.lua
+++ b/Titan/LDBToTitan.lua
@@ -83,7 +83,7 @@ local xcategories = {
 }
 local LAUNCHER = "launcher"
 local DATA_SOURCE = "data source"
-local SupportedDOTypes = {DATA_SOURCE, LAUNCHER} -- in the 1.1 spec
+local SupportedDOTypes = {DATA_SOURCE, LAUNCHER, "macro"} -- in the 1.1 spec

 -- constants & variables
 local CALLBACK_PREFIX = "LibDataBroker_AttributeChanged_"
@@ -725,12 +725,19 @@ function LDBToTitan:TitanLDBCreateObject(_, name, obj)
 	-- via a check in the menu implementation, later on.
 	local addoncategory, addonversion;
 	local tempname = obj.tocname or name;
-	if IsAddOnLoaded(tempname) then
+
+	-- This was a sanity check but does not allow for multiple
+	-- LDB to be within an addon yet act as their own addon.
+--	if IsAddOnLoaded(tempname) then
 		addoncategory = GetAddOnMetadata(tempname, "X-Category");
-		registry["category"]= addoncategory and xcategories[addoncategory] or nil
-		addonversion = GetAddOnMetadata(tempname, "Version");
-		registry["version"]= addonversion or nil;
-	end
+		registry["category"]= (addoncategory and xcategories[addoncategory])
+							or (obj.category)
+							or nil
+		addonversion = GetAddOnMetadata(tempname, "Version")
+							or (obj.version)
+							or ""
+		registry["version"]= addonversion;
+--	end

 	-- Depending on the LDB type set the control and saved Variables appropriately
 	if obj.type == LAUNCHER then
@@ -755,11 +762,22 @@ function LDBToTitan:TitanLDBCreateObject(_, name, obj)
 	-- Create the frame for this LDB addon
 	--

-	-- Create the Titan Frame as a Combo
+	-- Create the Titan Frame ...
 	-- Titan _OnLoad will be used to request the plugin be registered by Titan
-	local newTitanFrame = CreateFrame("Button",
-		"TitanPanel"..NAME_PREFIX..name.."Button",
-		UIParent, "TitanPanelComboTemplate")
+	local newTitanFrame -- a frame
+	if obj.type == "macro" then  -- custom
+		newTitanFrame = CreateFrame("Button",
+			"TitanPanel"..NAME_PREFIX..name.."Button",
+			UIParent, "TitanPanelComboTemplate, InsecureActionButtonTemplate")
+		newTitanFrame:SetAttribute("type", "macro")
+		newTitanFrame:SetAttribute("macrotext", obj.commandtext)
+
+	else
+		newTitanFrame = CreateFrame("Button",
+			"TitanPanel"..NAME_PREFIX..name.."Button",
+			UIParent, "TitanPanelComboTemplate")
+	end
+
 	newTitanFrame.registry = registry
 	newTitanFrame:SetFrameStrata("FULLSCREEN");
 	newTitanFrame:SetToplevel(true);
@@ -841,7 +859,7 @@ LDBToTitan:SetScript("OnEvent", function(self, event, ...)
 		-- Ensure all plugins (for LDB) are refreshed.
 		-- Some LDB plugins may have updated text, icon, etc
 		-- before the plugin was registered so be nice and schedule a refresh
-		TitanMovable_AdjustTimer("LDBRefresh")
-	end
+--		TitanMovable_AdjustTimer("LDBRefresh")
 	end
+end
 )
\ No newline at end of file
diff --git a/Titan/Titan.toc b/Titan/Titan.toc
index 3b5e258..0e4ae49 100644
--- a/Titan/Titan.toc
+++ b/Titan/Titan.toc
@@ -1,7 +1,7 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55f_Core_|r] |cff00aa005.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55f_Core_|r] |cff00aa006.00.02.100002|r
 ## Author: Titan Panel Development Team
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## 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/Titan/TitanConfig.lua b/Titan/TitanConfig.lua
index 9d00b8f..6195c93 100644
--- a/Titan/TitanConfig.lua
+++ b/Titan/TitanConfig.lua
@@ -18,6 +18,25 @@ local TitanSkinToRemove = "None";
 local TitanSkinName, TitanSkinPath = "", "";
 local TitanGlobalProfile = ""

+TITAN_PANEL_CONFIG = {
+	topic = {
+		About			= L["TITAN_PANEL"],
+		top				= L["TITAN_PANEL_MENU_TOP_BARS"],
+		bottom			= L["TITAN_PANEL_MENU_BOTTOM_BARS"],
+		plugins			= L["TITAN_PANEL_MENU_PLUGINS"],
+		profiles		= L["TITAN_PANEL_MENU_PROFILES"],
+		tooltips		= L["TITAN_PANEL_MENU_OPTIONS_SHORT"],
+		scale			= L["TITAN_UISCALE_MENU_TEXT_SHORT"],
+		trans			 = L["TITAN_TRANS_MENU_TEXT_SHORT"],
+		skins			= L["TITAN_PANEL_MENU_TEXTURE_SETTINGS"],
+		skinscust		= L["TITAN_SKINS_OPTIONS_CUSTOM"],
+		extras			= L["TITAN_PANEL_EXTRAS_SHORT"],
+		attempts		= L["TITAN_PANEL_ATTEMPTS_SHORT"],
+		advanced		= L["TITAN_PANEL_MENU_ADV"],
+		}
+	}
+-- TITAN_PANEL_CONFIG.topic.trans
+
 -- Titan local helper funcs
 local function TitanPanel_GetTitle()
 	return GetAddOnMetadata(TITAN_ID, "Title") or L["TITAN_NA"];
@@ -140,7 +159,8 @@ NAME: optionsControl
 DESC: Local table to hold the 'about' Titan info in the options.
 --]]
 local optionsControl = {
-	name = L["TITAN_PANEL"],
+	name = TITAN_PANEL_CONFIG.topic.About,
+	desc = L["TITAN_PANEL"],
 	type = "group",
 	args = {
 		confgendesc = {
@@ -220,7 +240,7 @@ This is the starting shell
 :DESC
 --]]
 local optionsTrans = {
-	name = L["TITAN_TRANS_MENU_TEXT"],
+	name = TITAN_PANEL_CONFIG.topic.trans, --L["TITAN_TRANS_MENU_TEXT"],
 	type = "group",
 	args = {
 		confdesc = {
@@ -339,7 +359,7 @@ NAME: optionsSkins
 DESC: Local table to hold the Titan skins options. Shows default Titan and any custom skins the user has added.
 --]]
 local optionsSkins = {
-	name = L["TITAN_SKINS_TITLE"],
+	name = TITAN_PANEL_CONFIG.topic.skins, --L["TITAN_SKINS_TITLE"],
 	type = "group",
 	args = {
 		setskinhdear = {
@@ -405,7 +425,7 @@ DESC: Local table to hold the Titan custom skins options that allow a user to ad
 :DESC
 --]]
 local optionsSkinsCustom = {
-	name = L["TITAN_SKINS_TITLE_CUSTOM"],
+	name = TITAN_PANEL_CONFIG.topic.skinscust, --L["TITAN_SKINS_TITLE_CUSTOM"],
 	type = "group",
 	args = {
 		confdesc = {
@@ -552,7 +572,7 @@ DESC: Local table to hold the Titan options that allow a user to adjust:
 :DESC
 --]]
 local optionsUIScale = {
-	name = L["TITAN_UISCALE_MENU_TEXT"],
+	name = TITAN_PANEL_CONFIG.topic.scale, --L["TITAN_UISCALE_MENU_TEXT"],
 	type = "group",
 	args = {
 		confdesc = {
@@ -697,7 +717,7 @@ Main (top) controls:
 :DESC
 --]]
 local optionsBars = {
-	name = L["TITAN_PANEL_MENU_OPTIONS_MAIN_BARS"],
+	name = TITAN_PANEL_CONFIG.topic.top, --L["TITAN_PANEL_MENU_OPTIONS_MAIN_BARS"],
 	type = "group",
 	args = {
 		confdesc1 = {
@@ -770,6 +790,10 @@ local optionsBars = {
 			end,
 			set = function() TitanPanelBarButton_ToggleAlign("Bar2_Align"); end,
 		},
+	}
+}
+-- DF do not need adjust
+--[=[
 		confdesc3 = {
 			order = 300,
 			type = "header",
@@ -798,8 +822,7 @@ local optionsBars = {
 			get = function() return TitanPanelGetVar("TicketAdjust"); end,
 			set = function() TitanPanel_TicketReload() end,
 		},
-	}
-}
+--]=]

 --[[ local
 NAME: optionsAuxBars
@@ -815,7 +838,7 @@ Main (top) controls:
 :DESC
 --]]
 local optionsAuxBars = {
-	name = L["TITAN_PANEL_MENU_OPTIONS_AUX_BARS"],
+	name = TITAN_PANEL_CONFIG.topic.bottom, --L["TITAN_PANEL_MENU_OPTIONS_AUX_BARS"],
 	type = "group",
 	args = {
 		confdesc1 = {
@@ -885,6 +908,94 @@ local optionsAuxBars = {
 			set = function() TitanPanelBarButton_ToggleAlign("AuxBar2_Align"); end,
 		},
 		confdesc3 = {
+				order = 400,
+				type = "header",
+				name = "Vertical Adjustment", --L["TITAN_PANEL_MENU_BOTTOM2"],
+		},
+		confmainmenudesc = {
+			name = "Menu and Bag Buttons",
+			type = "group", inline = true,
+			order = 401,
+			args = {
+				confbuffdesc = {
+					order = 110,
+					type = "description",
+					name = "Adjust Micro menu and Bag Buttons Vertically", --L["TITAN_PANEL_MENU_ADV_DESC"],
+					cmdHidden = true
+					},
+				optionadjon = {
+					name = USE, -- "On.", --["TITAN_PANEL_MENU_CENTER_TEXT"],
+					desc = "Adjust Menu and Bag Bar",  --L["TITAN_PANEL_MENU_CENTER_TEXT"],
+					order = 115, type = "toggle", width = "full",
+					get = function()
+						return TitanPanelGetVar("MenuAndBagVerticalAdjOn")
+					end,
+					set = function(_, a)
+						TitanPanelSetVar("MenuAndBagVerticalAdjOn", a)
+-- DF switch to sliding menu & bag bar since 10.0 allows user to adjust most frames
+						TitanPanel_AdjustFrames(true, "MenuAndBagVerticalAdj")
+					end,
+				},
+				advbuffadj = {
+					name = "Menu and Bags", --L["TITAN_PANEL_MENU_ADV_PEW"],
+					desc = "", -- L["TITAN_PANEL_MENU_ADV_PEW_DESC"],
+					order = 120, type = "range", width = "full",
+					min = -100, max = 500, step = 1,
+					get = function() return TitanPanelGetVar("MenuAndBagVerticalAdj") end,
+					set = function(_, a)
+						TitanPanelSetVar("MenuAndBagVerticalAdj", a);
+						-- Adjust frame positions
+-- DF switch to sliding menu & bag bar since 10.0 allows user to adjust most frames
+						TitanPanel_AdjustFrames(true, "MenuAndBagVerticalAdj")
+					end,
+				},
+			},
+		},
+		confxpbardesc = {
+			name = "Status Bar",
+			type = "group", inline = true,
+			order = 410,
+			args = {
+				confbuffdesc = {
+					order = 110,
+					type = "description",
+					name = "Adjust XP Bar Vertically", --L["TITAN_PANEL_MENU_ADV_DESC"],
+					cmdHidden = true
+					},
+				optionadjon = {
+					name = USE, -- "On.", --["TITAN_PANEL_MENU_CENTER_TEXT"],
+					desc = "Adjust Status Bar",  --L["TITAN_PANEL_MENU_CENTER_TEXT"],
+					order = 115, type = "toggle", width = "full",
+					get = function()
+						return TitanPanelGetVar("XPBarVerticalAdjOn")
+					end,
+					set = function(_, a)
+						TitanPanelSetVar("XPBarVerticalAdjOn", a)
+-- DF switch to sliding menu & bag bar since 10.0 allows user to adjust most frames
+						TitanPanel_AdjustFrames(true, "XPBarVerticalAdj")
+					end,
+				},
+				advbuffadj = {
+					name = "XP and Status", --L["TITAN_PANEL_MENU_ADV_PEW"],
+					desc = "", -- L["TITAN_PANEL_MENU_ADV_PEW_DESC"],
+					order = 120, type = "range", width = "full",
+					min = -20, max = 500, step = 1,
+					get = function() return TitanPanelGetVar("XPBarVerticalAdj") end,
+					set = function(_, a)
+						TitanPanelSetVar("XPBarVerticalAdj", a);
+						-- Adjust frame positions
+-- DF switch to sliding menu & bag bar since 10.0 allows user to adjust most frames
+						TitanPanel_AdjustFrames(true, "XPBarVerticalAdj")
+					end,
+				},
+			},
+		},
+	}
+}
+-- DF do not need adjust
+
+--[=[
+		confdesc3 = {
 			order = 300,
 			type = "header",
 			name = L["TITAN_PANEL_OPTIONS"],
@@ -927,8 +1038,7 @@ local optionsAuxBars = {
 				TitanPanel_AdjustFrames(true, "Config: Adjust X (right / left)")
 			end,
 		},
-	}
-}
+--]=]
 -------------

 -------------
@@ -949,7 +1059,7 @@ Actions:
 :DESC
 --]]
 local optionsFrames = {
-	name = L["TITAN_PANEL_MENU_OPTIONS"],
+	name = TITAN_PANEL_CONFIG.topic.tooltips, --L["TITAN_PANEL_MENU_OPTIONS"],
 	type = "group",
 	args = {
 		confdesc2 = {
@@ -1100,7 +1210,7 @@ NAME: optionsAddonAttempts
 DESC: This is the table shell. The plugin info will be added by another routine.
 --]]
 local optionsAddonAttempts = {
-	name = L["TITAN_PANEL_ATTEMPTS"],
+	name = TITAN_PANEL_CONFIG.topic.attempts, --L["TITAN_PANEL_ATTEMPTS"],
 	type = "group",
 	args = {}
 }
@@ -1229,7 +1339,7 @@ NAME: optionsExtras
 DESC: This is the table shell. The plugin info will be added by another routine.
 --]]
 local optionsExtras = {
-	name = L["TITAN_PANEL_EXTRAS"],
+	name = TITAN_PANEL_CONFIG.topic.extras, --L["TITAN_PANEL_EXTRAS"],
 	type = "group",
 	args = {}
  }
@@ -1299,7 +1409,7 @@ NAME: optionsChars
 DESC: This is the table shell. The toon info will be added by another routine.
 --]]
 local optionsChars = {
-	name = "Titan "..L["TITAN_PANEL_MENU_PROFILES"],
+	name = TITAN_PANEL_CONFIG.topic.profiles, --"Titan "..L["TITAN_PANEL_MENU_PROFILES"],
 	type = "group",
 	args = {}
 }
@@ -1536,7 +1646,7 @@ NAME: optionsAddons
 DESC: This is the table shell. The plugin controls will be added by another routine.
 --]]
 local optionsAddons = {
-	name = "Titan "..L["TITAN_PANEL_MENU_PLUGINS"],
+	name = TITAN_PANEL_CONFIG.topic.plugins, --"Titan "..L["TITAN_PANEL_MENU_PLUGINS"],
 	type = "group",
 	args = {}
 }
@@ -1804,10 +1914,7 @@ Controls:
 - Vehicle timer - some users need Titan to wait longer whenever entering or leaving a vehicle before adjusting frames.
 :DESC
 --]]
-local optionsAdvanced = {
-	name = L["TITAN_PANEL_MENU_ADV"],
-	type = "group",
-	args = {
+--[[
 		conftimerdesc = {
 			name = "Timers",
 			type = "group", inline = true,
@@ -1830,6 +1937,8 @@ local optionsAdvanced = {
 						TitanTimers["EnterWorld"].delay = a
 					end,
 				},
+			},
+		},
 				advtimervehicle = {
 					name = L["TITAN_PANEL_MENU_ADV_VEHICLE"],
 					desc = L["TITAN_PANEL_MENU_ADV_VEHICLE_DESC"],
@@ -1841,33 +1950,11 @@ local optionsAdvanced = {
 						TitanTimers["Vehicle"].delay = a
 					end,
 				},
-			},
-		},
-		confbuffdesc = {
-			name = "Buff Icon Vertical Adjustment",
-			type = "group", inline = true,
-			order = 2,
-			args = {
-				confbuffdesc = {
-					order = 110,
-					type = "description",
-					name = "Adjust Buff icons only as needed. This will override the Titan default adjustment.", --L["TITAN_PANEL_MENU_ADV_DESC"],
-					cmdHidden = true
-					},
-				advbuffadj = {
-					name = "Buff", --L["TITAN_PANEL_MENU_ADV_PEW"],
-					desc = "", -- L["TITAN_PANEL_MENU_ADV_PEW_DESC"],
-					order = 120, type = "range", width = "full",
-					min = -100, max = 100, step = 1,
-					get = function() return TitanPanelGetVar("BuffIconVerticalAdj") end,
-					set = function(_, a)
-						TitanPanelSetVar("BuffIconVerticalAdj", a);
-						-- Adjust frame positions
-						TitanPanel_AdjustFrames(true, "BuffIconVerticalAdj")
-					end,
-				},
-			},
-		},
+--]]
+local optionsAdvanced = {
+	name = TITAN_PANEL_CONFIG.topic.advanced, --L["TITAN_PANEL_MENU_ADV"],
+	type = "group",
+	args = {
 		confoutputdesc = {
 			name = "Output",
 			type = "group", inline = true,
@@ -1948,7 +2035,10 @@ end
 --[[
 Register the options tables with Ace then register the options with Blizz so the user can use them.
 --]]
--- Add Blizzard Configuration Panel
+-- Add Blizzard Configuration Panels
+--[[ The first param needs to used for the 'add to options'
+The second param must be the table Ace will use to create the user options
+--]]
 AceConfig:RegisterOptionsTable("Titan Panel Main", optionsControl)
 AceConfig:RegisterOptionsTable("Titan Panel Bars", optionsBars)
 AceConfig:RegisterOptionsTable("Titan Panel Aux Bars", optionsAuxBars)
@@ -1962,18 +2052,24 @@ AceConfig:RegisterOptionsTable("Titan Panel Addon Attempts", optionsAddonAttempt
 AceConfig:RegisterOptionsTable("Titan Panel Addon Extras", optionsExtras)
 AceConfig:RegisterOptionsTable("Titan Panel Addon Chars", optionsChars)
 AceConfig:RegisterOptionsTable("Titan Panel Addon Advanced", optionsAdvanced)
+--]]
 -- Set the main options pages
-AceConfigDialog:AddToBlizOptions("Titan Panel Main", L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Bars", L["TITAN_PANEL_MENU_TOP_BARS"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Aux Bars", L["TITAN_PANEL_MENU_BOTTOM_BARS"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Addon Control", L["TITAN_PANEL_MENU_PLUGINS"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Addon Chars", L["TITAN_PANEL_MENU_PROFILES"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Frames", L["TITAN_PANEL_MENU_OPTIONS_SHORT"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Panel Control", L["TITAN_UISCALE_MENU_TEXT_SHORT"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Transparency Control", L["TITAN_TRANS_MENU_TEXT_SHORT"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Skin Control", L["TITAN_PANEL_MENU_TEXTURE_SETTINGS"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Skin Custom", L["TITAN_SKINS_OPTIONS_CUSTOM"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Addon Extras", L["TITAN_PANEL_EXTRAS_SHORT"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Addon Attempts", L["TITAN_PANEL_ATTEMPTS_SHORT"], L["TITAN_PANEL"])
-AceConfigDialog:AddToBlizOptions("Titan Panel Addon Advanced", L["TITAN_PANEL_MENU_ADV"], L["TITAN_PANEL"])
+--[[ The first param must be the same as the cooresponding 'Ace register'
+The second param should be the same as the .name of the cooresponding table that was registered,
+if not, any 'open' may fail.
+--]]
+--AceConfigDialog:AddToBlizOptions("Titan Panel Main", L["TITAN_PANEL"])
+AceConfigDialog:AddToBlizOptions("Titan Panel Main", optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Bars", optionsBars.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Aux Bars", optionsAuxBars.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Addon Control", optionsAddons.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Addon Chars", optionsChars.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Frames", optionsFrames.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Panel Control", optionsUIScale.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Transparency Control", optionsTrans.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Skin Control", optionsSkins.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Skin Custom", optionsSkinsCustom.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Addon Extras", optionsExtras.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Addon Attempts", optionsAddonAttempts.name, optionsControl.name)
+AceConfigDialog:AddToBlizOptions("Titan Panel Addon Advanced", optionsAdvanced.name, optionsControl.name)

diff --git a/Titan/TitanMovable.lua b/Titan/TitanMovable.lua
index cac8031..de3c20d 100755
--- a/Titan/TitanMovable.lua
+++ b/Titan/TitanMovable.lua
@@ -91,6 +91,32 @@ hooksecurefunc(FrameRef, "SetPoint", function(self)
 end)
 --]]

+-- DF with DragonFlight these are no longer needed
+--[====[
+--[[ Titan
+NAME: TitanMovable_AdjustTimer
+DESC: Cancel then add the given timer. The timer must be in TitanTimers.
+VAR: ttype - The timer type (string) as defined in TitanTimers
+OUT:  None
+--]]
+function TitanMovable_AdjustTimer(ttype)
+	local timer = TitanTimers[ttype]
+	if timer then
+		TitanPanelAce.CancelAllTimers(timer.obj)
+		TitanPanelAce.ScheduleTimer(timer.obj, timer.callback, timer.delay)
+	end
+end
+
+--[[ local
+NAME: Titan_AdjustUIScale
+DESC: Adjust the scale of Titan bars and plugins to the user selected scaling. This is called by the secure post hooks to the 'Video Options Frame'.
+VAR:  None
+OUT:  None
+--]]
+local function Titan_AdjustUIScale()
+	Titan_AdjustScale()
+end
+
 --[[ local
 NAME: f_list table
 DESC: Holds the list of frames Titan may adjust with additional data.
@@ -220,56 +246,6 @@ function TitanMovable_MenuBar_Enable()
 	end
 end

---[[ API
-NAME: TitanMovable_GetPanelYOffset
-DESC: Get the Y axis offset Titan needs (1 or 2 bars) at the given position - top or bottom.
-VAR: framePosition - TITAN_PANEL_PLACE_TOP or TITAN_PANEL_PLACE_BOTTOM
-OUT: Y axis offset, in pixels
-NOTE:
-- The preferred method to determine the Y offset needed to use TitanUtils_GetBarAnchors()
-which provides anchors (frames) for an addon to use.
-:NOTE
---]]
-function TitanMovable_GetPanelYOffset(framePosition) -- used by other addons
-	-- Both top & bottom are figured out but only the
-	-- requested position is returned
-	local barnum_top = 0
-	local barnum_bot = 0
-	-- If user has the top adjust set then determine the
-	-- top offset
-	if not TitanPanelGetVar("ScreenAdjust") then
-		if TitanPanelGetVar("Bar_Show") then
-			barnum_top = 1
-		end
-		if TitanPanelGetVar("Bar2_Show") then
-			barnum_top = 2
-		end
-	end
-	-- If user has the top adjust set then determine the
-	-- bottom offset
-	if not TitanPanelGetVar("AuxScreenAdjust") then
-		if TitanPanelGetVar("AuxBar_Show") then
-			barnum_bot = 1
-		end
-		if TitanPanelGetVar("AuxBar2_Show") then
-			barnum_bot = 2
-		end
-	end
-	local scale = TitanPanelGetVar("Scale")
-	-- return the requested offset
-	-- 0 will be returned if the user has no bars showing
-	-- or the scale is not valid
-	if scale and framePosition then
-		if framePosition == TITAN_PANEL_PLACE_TOP and barnum_top > 0 then
-			return (-TITAN_PANEL_BAR_HEIGHT * scale)*(barnum_top);
-		elseif framePosition == TITAN_PANEL_PLACE_BOTTOM and barnum_bot > 0 then
-			return (TITAN_PANEL_BAR_HEIGHT * scale)*(barnum_bot)
-				-1 -- no idea why -1 is needed... seems anchoring to bottom is off a pixel
-		end
-	end
-	return 0
-end
-
 --[[ local
 NAME: TitanMovableFrame_GetXOffset
 DESC: Get the x axis offset Titan needs to adjust the given frame.
@@ -316,6 +292,8 @@ Titan does not control the frames as other addons so we honor a user placed fram
 :NOTE
 --]]
 local function SetPosition(frame, ...)
+
+--[===[
 	local fname = frame:GetName()
 	local um = false
 	if f_list[fname] and f_list[fname].user_movable then
@@ -355,6 +333,16 @@ local function SetPosition(frame, ...)
 			frame:SetMovable(false)         -- lock frame from moving
 		end
     end
+--]===]
+    if type(frame) == 'string' then
+--        UIPARENT_MANAGED_FRAME_POSITIONS[frame] = nil
+        frame = _G[frame]
+    end
+        if ... then
+            frame:ClearAllPoints()
+            frame:SetPoint(...)
+        end
+
 end

 --[[ local
@@ -630,7 +618,8 @@ NOTE:
 - The move function sets info in the frame itself. It so inside the move because some frames, such as the ticket frame, may not be created until needed.
 :NOTE
 --]]
-local MData = {
+
+--[[ Frames to find or remove
 	[1] = {
 		frameName = "PlayerFrame",
 		move = function (force)
@@ -644,7 +633,7 @@ local MData = {
 			end,
 		addonAdj = false, },
 	[3] = {
-		frameName = "PartyMemberFrame1",
+		frameNameNA = "PartyMemberFrame1",
 		move = function (force)
 			MoveFrame("PartyMemberFrame1", 0, TITAN_PANEL_PLACE_TOP, force)
 			end,
@@ -739,21 +728,19 @@ local MData = {
 			end
 			end,
 		addonAdj = false, },
-}
-
---[[ Titan
-NAME: TitanMovable_AdjustTimer
-DESC: Cancel then add the given timer. The timer must be in TitanTimers.
-VAR: ttype - The timer type (string) as defined in TitanTimers
-OUT:  None
 --]]
-function TitanMovable_AdjustTimer(ttype)
-	local timer = TitanTimers[ttype]
-	if timer then
-		TitanPanelAce.CancelAllTimers(timer.obj)
-		TitanPanelAce.ScheduleTimer(timer.obj, timer.callback, timer.delay)
-	end
-end
+local MData = {
+	[1] = { },
+	[2] = { },
+	[3] = { },
+	[4] = { },
+	[5] = { },
+	[6] = { },
+	[7] = { },
+	[8] = { },
+	[9] = { },
+	[10] = { },
+}

 --[[ Titan
 NAME: TitanMovable_AddonAdjust
@@ -766,7 +753,7 @@ function TitanMovable_AddonAdjust(frame, bool)
 	for i = 1,#MData,1 do
 		local fData = MData[i]
 		local fName = nil
-		if fData then
+		if fData.frameName then
 			fName = fData.frameName;
 		end

@@ -775,92 +762,87 @@ function TitanMovable_AddonAdjust(frame, bool)
 		end
 	end
 end
-
---[[ local
-NAME: TitanMovableFrame_MoveFrames
-DESC: Loop through MData calling each frame's 'move' function for each Titan controlled frame.
-Then update the chat and open bag frames.
-OUT: None
---]]
-local function TitanMovableFrame_MoveFrames(place, force)
-	local move_count = 0 -- debug
-	local str = "" -- debug
-	local force = force or false
-	--[[
-	Setting the MainMenuBar as user placed is needed because in 8.0.0 because Blizzard changed something in the
-	way they controlled the frame. With Titan Panel and bottom bars enabled the MainMenuBar
-	would 'bounce'. Figuring out the true root cause was a bust.
-	This idea of user placed came from a Titan user who is an addon developer.
-	However setting user placed causes the main menu bar to not act as we desire due to the way Blizzard coded the bar.
-	For now we will try to minimize the side effects...
-
-	Later Titan checks rely on the user placed flag so it needs to be set early.
-	--]]
-	if DoAdjust(TITAN_PANEL_PLACE_BOTTOM, force) then
-		TitanMovable_MenuBar_Enable()
-	end
-
-	if not InCombatLockdown() then
-		for i = 1,#MData,1 do
-			if MData[i] then
-				if MData[i].addonAdj then
-					-- An addon has taken control of the frame so skip
-				else
-					local md = MData[i]
-					if place == f_list[md.frameName].place or place == TITAN_PANEL_PLACE_BOTH then
-						-- Adjust the frame per MData
-						md.move(force)
-					end
-				end
-			end
+--]====]
+
+local function Titan_AdjustFrame(frame_str, flag, offset)
+	local frame = _G[frame_str]
+	local point, relativeTo, relativePoint, xOfs, yOfs = frame:GetPoint()
+	if point and relativeTo and relativePoint and xOfs then
+		-- should be safe...
+		if TitanPanelGetVar(flag) then
+			frame:ClearAllPoints()
+			frame:SetPoint(point, relativeTo:GetName(), relativePoint, xOfs, TitanPanelGetVar(offset))
+			op = "move - y "..tostring(y)
+		else
+			frame:ClearAllPoints()
+			frame:SetPoint(point, relativeTo:GetName(), relativePoint, xOfs, frame.original_y)
 		end
-
-		Titan_FCF_UpdateDockPosition(); -- chat
-		UpdateContainerFrameAnchors(); -- Move bags as needed
 	else
-		-- nothing to do
+		op = "skip - :GetPoint invalid"
+		-- do not proceed
 	end
-end
-
---[[ local
-NAME: Titan_AdjustUIScale
-DESC: Adjust the scale of Titan bars and plugins to the user selected scaling. This is called by the secure post hooks to the 'Video Options Frame'.
-VAR:  None
-OUT:  None
+--[[
+print("T_Movable _AdjustFrame"
+.." "..tostring(frame_str)
+.." flag "..tostring(TitanPanelGetVar(flag))
+.." x"..tostring(xOfs)
+.." y"..tostring(yOfs)
+.." "..tostring(TitanPanelGetVar(offset))
+.." "..tostring(frame.original_y)
+)
 --]]
-local function Titan_AdjustUIScale()
-	Titan_AdjustScale()
 end

---[[ Titan
-NAME: TitanPanel_AdjustFrames
-DESC: Adjust the frames for the Titan visible bars.
-This is a shell for the actual Movable routine used by other Titan routines and secure hooks
-VAR:  force - Force an adjust such as when the user changes bars shown
-VAR:  reason - Debug to determine where and why an adjust is requested
-OUT:  None
+--[[ API
+NAME: TitanMovable_GetPanelYOffset
+DESC: Get the Y axis offset Titan needs (1 or 2 bars) at the given position - top or bottom.
+VAR: framePosition - TITAN_PANEL_PLACE_TOP or TITAN_PANEL_PLACE_BOTTOM
+OUT: Y axis offset, in pixels
 NOTE:
+- As of DragonFlight this may not be as useful. Leaving to not break any addons.
+
+- The preferred method to determine the Y offset needed to use TitanUtils_GetBarAnchors()
+which provides anchors (frames) for an addon to use.
 :NOTE
 --]]
-function TitanPanel_AdjustFrames(force, reason)
-	if TITAN_PANEL_VARS.debug.movable then
-		TitanDebug ("_AdjustFrames :"
-			.." f: "..tostring(force)
-			.." r: '"..tostring(reason).."'"
-			)
+function TitanMovable_GetPanelYOffset(framePosition) -- used by other addons
+	-- Both top & bottom are figured out but only the
+	-- requested position is returned
+	local barnum_top = 0
+	local barnum_bot = 0
+	-- If user has the top adjust set then determine the
+	-- top offset
+	if not TitanPanelGetVar("ScreenAdjust") then
+		if TitanPanelGetVar("Bar_Show") then
+			barnum_top = 1
+		end
+		if TitanPanelGetVar("Bar2_Show") then
+			barnum_top = 2
+		end
 	end
-
-	local f = false -- do not require the parameter
-	if force == true then -- but force it to be boolean
-		f = true
-	else
-		f = false
+	-- If user has the top adjust set then determine the
+	-- bottom offset
+	if not TitanPanelGetVar("AuxScreenAdjust") then
+		if TitanPanelGetVar("AuxBar_Show") then
+			barnum_bot = 1
+		end
+		if TitanPanelGetVar("AuxBar2_Show") then
+			barnum_bot = 2
+		end
 	end
-
-	-- Adjust frame positions top and bottom based on user choices
-	if hooks_done then
-		TitanMovableFrame_MoveFrames(TITAN_PANEL_PLACE_BOTH, f)
+	local scale = TitanPanelGetVar("Scale")
+	-- return the requested offset
+	-- 0 will be returned if the user has no bars showing
+	-- or the scale is not valid
+	if scale and framePosition then
+		if framePosition == TITAN_PANEL_PLACE_TOP and barnum_top > 0 then
+			return (-TITAN_PANEL_BAR_HEIGHT * scale)*(barnum_top);
+		elseif framePosition == TITAN_PANEL_PLACE_BOTTOM and barnum_bot > 0 then
+			return (TITAN_PANEL_BAR_HEIGHT * scale)*(barnum_bot)
+				-1 -- no idea why -1 is needed... seems anchoring to bottom is off a pixel
+		end
 	end
+	return 0
 end

 --[[ Titan
@@ -906,6 +888,54 @@ These may be called from any Titan Panel code
 :NOTE
 --]]

+--[====[
+
+--[[ local
+NAME: TitanMovableFrame_MoveFrames
+DESC: Loop through MData calling each frame's 'move' function for each Titan controlled frame.
+Then update the chat and open bag frames.
+OUT: None
+--]]
+local function TitanMovableFrame_MoveFrames(place, force)
+	local move_count = 0 -- debug
+	local str = "" -- debug
+	local force = force or false
+	--[[
+	Setting the MainMenuBar as user placed is needed because in 8.0.0 because Blizzard changed something in the
+	way they controlled the frame. With Titan Panel and bottom bars enabled the MainMenuBar
+	would 'bounce'. Figuring out the true root cause was a bust.
+	This idea of user placed came from a Titan user who is an addon developer.
+	However setting user placed causes the main menu bar to not act as we desire due to the way Blizzard coded the bar.
+	For now we will try to minimize the side effects...
+
+	Later Titan checks rely on the user placed flag so it needs to be set early.
+	--]]
+	if DoAdjust(TITAN_PANEL_PLACE_BOTTOM, force) then
+		TitanMovable_MenuBar_Enable()
+	end
+
+	if not InCombatLockdown() then
+		for i = 1,#MData,1 do
+			if MData[i].frameName then
+				if MData[i].addonAdj then
+					-- An addon has taken control of the frame so skip
+				else
+					local md = MData[i]
+					if place == f_list[md.frameName].place or place == TITAN_PANEL_PLACE_BOTH then
+						-- Adjust the frame per MData
+						md.move(force)
+					end
+				end
+			end
+		end
+
+		Titan_FCF_UpdateDockPosition(); -- chat
+		UpdateContainerFrameAnchors(); -- Move bags as needed
+	else
+		-- nothing to do
+	end
+end
+
 function Titan_Hook_Frames() -- UIParent_ManageFramePositions hook
 	--[[
 	This is the routine that will be called the most. It is the general purpose routine for WoW frames.
@@ -1013,8 +1043,57 @@ end
 function Titan_Hook_Vehicle() -- in config but not used
 	TitanPanel_AdjustFrames(false, "Hook Vehicle Config timer ")
 end
+--]====]

 -- =============
+--[[ Titan
+NAME: TitanPanel_AdjustFrames
+DESC: Adjust the frames for the Titan visible bars.
+This is a shell for the actual Movable routine used by other Titan routines and secure hooks
+VAR:  force - Force an adjust such as when the user changes bars shown
+VAR:  reason - Debug to determine where and why an adjust is requested
+OUT:  None
+NOTE:
+:NOTE
+--]]
+function TitanPanel_AdjustFrames(force, reason)
+	if TITAN_PANEL_VARS.debug.movable then
+		TitanDebug ("_AdjustFrames :"
+			.." f: "..tostring(force)
+			.." r: '"..tostring(reason).."'"
+			)
+	end
+
+	local f = false -- do not require the parameter
+	if force == true then -- but force it to be boolean
+		f = true
+	else
+		f = false
+	end
+
+--[[
+print("T_Movable"
+.." "..tostring(hooks_done)
+.." "..tostring(reason)
+.." mb "..tostring(TitanPanelGetVar("MenuAndBagVerticalAdjOn"))
+.." "..tostring(TitanPanelGetVar("MenuAndBagVerticalAdj"))
+.." xp "..tostring(TitanPanelGetVar("XPBarVerticalAdjOn"))
+.." "..tostring(TitanPanelGetVar("XPBarVerticalAdj"))
+)
+--]]
+-- DF no longer react to hooks - now react to PEW and config changes.
+	-- Adjust frame positions top and bottom based on user choices
+	if hooks_done then
+		if reason == "Init: PEW (Player Entering World)"
+		or reason == "MenuAndBagVerticalAdj" then
+			Titan_AdjustFrame("MicroButtonAndBagsBar", "MenuAndBagVerticalAdjOn", "MenuAndBagVerticalAdj")
+		end
+		if reason == "Init: PEW (Player Entering World)"
+		or reason == "XPBarVerticalAdj" then
+			Titan_AdjustFrame("StatusTrackingBarManager", "XPBarVerticalAdjOn", "XPBarVerticalAdj")
+		end
+	end
+end

 --[[ Titan
 NAME: TitanMovable_SecureFrames
@@ -1027,9 +1106,14 @@ NOTE:
 :NOTE
 --]]
 function TitanMovable_SecureFrames()
+
+--[===[
+
+--[[
 	if not TitanPanelAce:IsHooked("FCF_UpdateDockPosition", Titan_FCF_UpdateDockPosition) then
 		TitanPanelAce:SecureHook("FCF_UpdateDockPosition", Titan_FCF_UpdateDockPosition) -- FloatingChatFrame
 	end
+--]]
 	if not TitanPanelAce:IsHooked("UIParent_ManageFramePositions", Titan_Hook_Frames) then
 		TitanPanelAce:SecureHook("UIParent_ManageFramePositions", Titan_Hook_Frames) -- UIParent.lua
 		TitanPanel_AdjustFrames(true, "Hook First UIParent_ManageFramePositions")
@@ -1038,8 +1122,11 @@ function TitanMovable_SecureFrames()
 	if not TitanPanelAce:IsHooked(TicketStatusFrame, "Show", Titan_Hook_Ticket_Show) then
 		TitanPanelAce:SecureHook(TicketStatusFrame, "Show", Titan_Hook_Ticket_Show) -- HelpFrame.xml
 		TitanPanelAce:SecureHook(TicketStatusFrame, "Hide", Titan_Hook_Ticket_Hide) -- HelpFrame.xml
-		TitanPanelAce:SecureHook("TargetFrame_Update", Titan_Hook_Target) -- TargetFrame.lua
-		TitanPanelAce:SecureHook("UpdateContainerFrameAnchors", Titan_ContainerFrames_Relocate) -- ContainerFrame.lua
+--		TitanPanelAce:SecureHook("TargetFrame_Update", Titan_Hook_Target) -- TargetFrame.lua
+
+-- DF no longer exists...
+--		TitanPanelAce:SecureHook("UpdateContainerFrameAnchors", Titan_ContainerFrames_Relocate) -- ContainerFrame.lua
+
 		TitanPanelAce:SecureHook(WorldMapFrame.BorderFrame.MaximizeMinimizeFrame.MinimizeButton, "Show", Titan_Hook_Map) -- WorldMapFrame.lua

 --		TitanPanelAce:SecureHook("OrderHall_CheckCommandBar", Titan_Hook_OrderHall)
@@ -1053,14 +1140,35 @@ function TitanMovable_SecureFrames()
 		argument in the API call and trigger the CVAR_UPDATE event with an appropriate argument so that other addons
 		can detect this behavior and fire their own functions (where applicable).
 		--]]
-		TitanPanelAce:SecureHook("VideoOptionsFrameOkay_OnClick", Titan_AdjustUIScale) -- VideoOptionsFrame.lua
-		TitanPanelAce:SecureHook(VideoOptionsFrame, "Hide", Titan_AdjustUIScale) -- VideoOptionsFrame.xml
+--		TitanPanelAce:SecureHook("VideoOptionsFrameOkay_OnClick", Titan_AdjustUIScale) -- VideoOptionsFrame.lua
+--		TitanPanelAce:SecureHook(VideoOptionsFrame, "Hide", Titan_AdjustUIScale) -- VideoOptionsFrame.xml
 	end

 	-- Check for other addons that control UI frames. Tell Titan to back off of the frames these addons could control
 	CheckConflicts()
-
+
+--]===]
+
+	-- Save the original Y offest for the few frames the user may want to adjust via Titan
+	local point, relativeTo, relativePoint, xOfs, yOfs, frame
+
+---[=[
+	frame = _G["MicroButtonAndBagsBar"]
+	point, relativeTo, relativePoint, xOfs, yOfs = frame:GetPoint()
+	frame.original_y = yOfs
+--]=]
+
+---[=[
+	frame = _G["StatusTrackingBarManager"]
+	point, relativeTo, relativePoint, xOfs, yOfs = frame:GetPoint()
+	frame.original_y = yOfs
+--]=]
+
 	hooks_done = true
+
+	-- On start, adjust according to the user settings
+	TitanPanel_AdjustFrames(true, "Init: PEW (Player Entering World)")
+
 end

 --[[
diff --git a/Titan/TitanPanel.lua b/Titan/TitanPanel.lua
index 3351b96..416effc 100644
--- a/Titan/TitanPanel.lua
+++ b/Titan/TitanPanel.lua
@@ -22,6 +22,7 @@ local numOfTexturesHider = 0;
 local L = LibStub("AceLocale-3.0"):GetLocale(TITAN_ID, true)
 local AceTimer = LibStub("AceTimer-3.0")
 local media = LibStub("LibSharedMedia-3.0")
+local AceConfigDialog = LibStub("AceConfigDialog-3.0")

 --	TitanDebug (cmd.." : "..p1.." "..p2.." "..p3.." "..#cmd_list)

@@ -300,13 +301,13 @@ end
 -- Event registration
 --_G[TITAN_PANEL_CONTROL]:RegisterEvent("ADDON_LOADED");
 _G[TITAN_PANEL_CONTROL]:RegisterEvent("PLAYER_ENTERING_WORLD");
-_G[TITAN_PANEL_CONTROL]:RegisterEvent("PLAYER_REGEN_DISABLED");
-_G[TITAN_PANEL_CONTROL]:RegisterEvent("PLAYER_REGEN_ENABLED");
+--_G[TITAN_PANEL_CONTROL]:RegisterEvent("PLAYER_REGEN_DISABLED");
+--_G[TITAN_PANEL_CONTROL]:RegisterEvent("PLAYER_REGEN_ENABLED");
 _G[TITAN_PANEL_CONTROL]:RegisterEvent("CVAR_UPDATE");
 _G[TITAN_PANEL_CONTROL]:RegisterEvent("PLAYER_LOGOUT");
-_G[TITAN_PANEL_CONTROL]:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED");
-_G[TITAN_PANEL_CONTROL]:RegisterEvent("UNIT_ENTERED_VEHICLE");
-_G[TITAN_PANEL_CONTROL]:RegisterEvent("UNIT_EXITED_VEHICLE");
+--_G[TITAN_PANEL_CONTROL]:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED");
+--_G[TITAN_PANEL_CONTROL]:RegisterEvent("UNIT_ENTERED_VEHICLE");
+--_G[TITAN_PANEL_CONTROL]:RegisterEvent("UNIT_EXITED_VEHICLE");
 _G[TITAN_PANEL_CONTROL]:SetScript("OnEvent", function(_, event, ...)
 	_G[TITAN_PANEL_CONTROL][event](_G[TITAN_PANEL_CONTROL], ...)
 end)
@@ -431,7 +432,8 @@ function TitanPanel_PlayerEnteringWorld()
 	-- On longer game loads (log in, reload, instances, etc Titan will adjust
 	-- then Blizz will adjust putting the action buttons over / under Titan
 	-- if the user has aux 1/2 shown.
-	TitanMovable_AdjustTimer("EnterWorld")
+-- DF With DragonFlight, no longer needed
+--	TitanMovable_AdjustTimer("EnterWorld")

 end

@@ -519,6 +521,7 @@ function TitanPanelBarButton:PLAYER_LOGOUT()
 	Titan__InitializedPEW = nil
 end

+--[====[
 function TitanPanelBarButton:PLAYER_REGEN_DISABLED()
 	-- If in combat close all control frames and menus
 	if TITAN_PANEL_VARS.debug.movable
@@ -553,7 +556,7 @@ function TitanPanelBarButton:PLAYER_REGEN_ENABLED()
 		TitanPanelBarButton_DisplayBarsWanted("PLAYER_REGEN_ENABLED")
 	end
 end
---[
+
 function TitanPanelBarButton:ACTIVE_TALENT_GROUP_CHANGED()
 	TitanMovable_AdjustTimer("DualSpec")
 end
@@ -596,7 +599,7 @@ function TitanPanelBarButton:UNIT_EXITED_VEHICLE(self, ...)
 		TitanPanelBarButton_DisplayBarsWanted("UNIT_EXITED_VEHICLE")
 	end
 end
---]]
+--]====]
 --
 function TitanPanelBarButton:PET_BATTLE_OPENING_START()
 --	TitanDebug("Pet_battle start: ")
@@ -778,15 +781,20 @@ local function handle_giu_cmds(cmd_list)
 		return
 	end

+-- DF changed how options are called. The best I get is the Titan 'about', not deeper.
+	Settings.OpenToCategory(TITAN_PANEL_CONFIG.topic.About, TITAN_PANEL_CONFIG.topic.scale)
+-- so the below does not work as expected...
+--[[
 	if p1 == "control" then
-		InterfaceOptionsFrame_OpenToCategory(L["TITAN_UISCALE_MENU_TEXT_SHORT"])
+		Settings.OpenToCategory(TITAN_PANEL_CONFIG.topic.About, TITAN_PANEL_CONFIG.topic.scale)
 	elseif p1 == "trans" then
-		InterfaceOptionsFrame_OpenToCategory(L["TITAN_TRANS_MENU_TEXT_SHORT"])
+		Settings.OpenToCategory(TITAN_PANEL_CONFIG.topic.trans)
 	elseif p1 == "skin" then
-		InterfaceOptionsFrame_OpenToCategory(L["TITAN_PANEL_MENU_TEXTURE_SETTINGS"])
+		Settings.OpenToCategory(TITAN_PANEL_CONFIG.topic.About, TITAN_PANEL_CONFIG.topic.skins)
 	else
 		handle_slash_help("gui")
 	end
+--]]
 end

 --[[ local
@@ -1805,8 +1813,7 @@ local function TitanPanel_MainMenu()
 	info.text = L["TITAN_PANEL_MENU_CONFIGURATION"];
 	info.value = "Bars";
 	info.func = function()
-		InterfaceOptionsFrame_OpenToCategory(L["TITAN_PANEL_MENU_TOP_BARS"]);
-		InterfaceOptionsFrame_OpenToCategory(L["TITAN_PANEL_MENU_TOP_BARS"]); -- hack for a Blizz bug...
+		Settings.OpenToCategory(TITAN_PANEL_CONFIG.topic.About)
 	end
 	TitanPanelRightClickMenu_AddButton(info);

diff --git a/Titan/TitanPanelTemplate.lua b/Titan/TitanPanelTemplate.lua
index b83ecfd..9b8e445 100644
--- a/Titan/TitanPanelTemplate.lua
+++ b/Titan/TitanPanelTemplate.lua
@@ -804,7 +804,17 @@ local function TitanPanelButton_SetButtonText(id)
 		label1, value1, label2, value2, label3, value3, label4, value4 =
 			pcall(buttonTextFunction, id)

-	if not call_success then buttonText:SetText("<?>") return end
+--	if not call_success then buttonText:SetText("<?>") return end
+	if call_success then
+		-- All is good
+	else
+		buttonText:SetText("<?>")
+--[[
+		local msg = tostring(id).." '"..label1.."'"
+		TitanPrint(msg, "error")
+--]]
+		return
+	end

 	if label1 and
 		not (label2 or label3 or label4
diff --git a/Titan/TitanUtils.lua b/Titan/TitanUtils.lua
index e97bfc6..7fcfd30 100644
--- a/Titan/TitanUtils.lua
+++ b/Titan/TitanUtils.lua
@@ -50,9 +50,12 @@ NAME: TitanUtils_GetMinimapAdjust
 DESC: Return the current setting of the Titan MinimapAdjust option.
 VAR: None
 OUT: The value of the MinimapAdjust option
+NOTE:
+-  As of DragonFlight Titan Loc no longer adjusts or manipulates the minimap.
 --]]
 function TitanUtils_GetMinimapAdjust() -- Used by addons
-	return not TitanPanelGetVar("MinimapAdjust")
+--	return not TitanPanelGetVar("MinimapAdjust")
+	return false
 end

 --[[ API
@@ -60,11 +63,13 @@ NAME: TitanUtils_SetMinimapAdjust
 DESC: Set the current setting of the Titan MinimapAdjust option.
 VAR:  bool - true (off) or false (on)
 OUT:  None
+NOTE:
+-  As of DragonFlight Titan Loc no longer adjusts or manipulates the minimap.
 --]]
 function TitanUtils_SetMinimapAdjust(bool) -- Used by addons
 	-- This routine allows an addon to turn on or off
 	-- the Titan minimap adjust.
-	TitanPanelSetVar("MinimapAdjust", not bool)
+--	TitanPanelSetVar("MinimapAdjust", not bool)
 end

 --[[ API
@@ -74,6 +79,8 @@ VAR: frame - is the name (string) of the frame
 VAR: bool  - true if the addon will adjust the frame or false if Titan will adjust
 OUT:  None
 Note:
+-- As of DragonFlight, this is no longer needed. The Titan user can user place - or not - a couple frames not user placeable,
+
 - Titan will NOT store the adjust value across a log out / exit.
 - This is a generic way for an addon to tell Titan to not adjust a frame. The addon will take responsibility for adjusting that frame. This is useful for UI style addons so the user can run Titan and a modifed UI.
 - The list of frames Titan adjusts is specified in TitanMovableData within TitanMovable.lua.
@@ -81,7 +88,7 @@ Note:
 :NOTE
 --]]
 function TitanUtils_AddonAdjust(frame, bool) -- Used by addons
-	TitanMovable_AddonAdjust(frame, bool)
+--	TitanMovable_AddonAdjust(frame, bool)
 end

 --------------------------------------------------------------
@@ -2114,8 +2121,8 @@ function TitanDumpTimers()
 		.."'"..(TitanAllGetVar("TimerPEW") or "?").."' "
 		.."'"..(TitanAllGetVar("TimerDualSpec") or "?").."' "
 		.."'"..(TitanAllGetVar("TimerLDB") or "?").."' "
-		.."'"..(TitanAllGetVar("TimerAdjust") or "?").."' "
-		.."'"..(TitanAllGetVar("TimerVehicle") or "?").."' "
+--		.."'"..(TitanAllGetVar("TimerAdjust") or "?").."' "
+--		.."'"..(TitanAllGetVar("TimerVehicle") or "?").."' "
 	TitanPrint(str, "plain")
 end

diff --git a/Titan/TitanVariables.lua b/Titan/TitanVariables.lua
index d1f1040..cfa3844 100644
--- a/Titan/TitanVariables.lua
+++ b/Titan/TitanVariables.lua
@@ -277,7 +277,10 @@ TITAN_PANEL_SAVED_VARIABLES = {
 	AuxBar2_Transparency = 0.7,
 	AuxBar2_Align = TITAN_PANEL_BUTTONS_ALIGN_LEFT,
 	MainMenuBarXAdj = 0,
-	BuffIconVerticalAdj = 10,
+	MenuAndBagVerticalAdjOn = false,
+	MenuAndBagVerticalAdj = 24,
+	XPBarVerticalAdjOn = false,
+	XPBarVerticalAdj = 24,
 };

 --[[ Titan
@@ -535,25 +538,25 @@ OUT:  None
 local function Set_Timers(reset)
 	-- Titan is loaded so set the timers we want to use
 	TitanTimers = {
-		["EnterWorld"] = {obj = "PEW", callback = Titan_Hook_PEW, delay = 4,},
-		["DualSpec"] = {obj = "SpecSwitch", callback = Titan_Hook_SpecSwitch, delay = 2,},
+--		["EnterWorld"] = {obj = "PEW", callback = Titan_Hook_PEW, delay = 4,},
+--		["DualSpec"] = {obj = "SpecSwitch", callback = Titan_Hook_SpecSwitch, delay = 2,},
 		["LDBRefresh"] = {obj = "LDB", callback = TitanLDBRefreshButton, delay = 2,},
-		["Adjust"] = {obj = "MoveAdj", callback = Titan_Hook_MoveAdj, delay = 1,},
-		["Vehicle"] = {obj = "Vehicle", callback = Titan_Hook_Vehicle, delay = 1,},
+--		["Adjust"] = {obj = "MoveAdj", callback = Titan_Hook_MoveAdj, delay = 1,},
+--		["Vehicle"] = {obj = "Vehicle", callback = Titan_Hook_Vehicle, delay = 1,},
 	}

 	if reset then
-		TitanAllSetVar("TimerPEW", TitanTimers["EnterWorld"].delay)
-		TitanAllSetVar("TimerDualSpec", TitanTimers["DualSpec"].delay)
+--		TitanAllSetVar("TimerPEW", TitanTimers["EnterWorld"].delay)
+--		TitanAllSetVar("TimerDualSpec", TitanTimers["DualSpec"].delay)
 		TitanAllSetVar("TimerLDB", TitanTimers["LDBRefresh"].delay)
-		TitanAllSetVar("TimerAdjust", TitanTimers["Adjust"].delay)
-		TitanAllSetVar("TimerVehicle", TitanTimers["Vehicle"].delay)
+--		TitanAllSetVar("TimerAdjust", TitanTimers["Adjust"].delay)
+--		TitanAllSetVar("TimerVehicle", TitanTimers["Vehicle"].delay)
 	else
-		TitanTimers["EnterWorld"].delay = TitanAllGetVar("TimerPEW")
-		TitanTimers["DualSpec"].delay = TitanAllGetVar("TimerDualSpec")
+--		TitanTimers["EnterWorld"].delay = TitanAllGetVar("TimerPEW")
+--		TitanTimers["DualSpec"].delay = TitanAllGetVar("TimerDualSpec")
 		TitanTimers["LDBRefresh"].delay = TitanAllGetVar("TimerLDB")
-		TitanTimers["Adjust"].delay = TitanAllGetVar("TimerAdjust")
-		TitanTimers["Vehicle"].delay = TitanAllGetVar("TimerVehicle")
+--		TitanTimers["Adjust"].delay = TitanAllGetVar("TimerAdjust")
+--		TitanTimers["Vehicle"].delay = TitanAllGetVar("TimerVehicle")
 	end
 end

diff --git a/Titan/libs/AceGUI-3.0/AceGUI-3.0.lua b/Titan/libs/AceGUI-3.0/AceGUI-3.0.lua
index 724b151..7d9a2cf 100755
--- a/Titan/libs/AceGUI-3.0/AceGUI-3.0.lua
+++ b/Titan/libs/AceGUI-3.0/AceGUI-3.0.lua
@@ -24,28 +24,22 @@
 -- f:AddChild(btn)
 -- @class file
 -- @name AceGUI-3.0
--- @release $Id: AceGUI-3.0.lua 1231 2020-04-14 22:20:36Z nevcairiel $
+-- @release $Id: AceGUI-3.0.lua 1288 2022-09-25 14:19:00Z 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 tinsert = table.insert
+local tinsert, wipe = table.insert, table.wipe
 local select, pairs, next, type = select, pairs, next, type
 local error, assert = error, assert
 local setmetatable, rawget = setmetatable, rawget
-local math_max = math.max
+local math_max, math_min, math_ceil = math.max, math.min, math.ceil

 -- WoW APIs
 local UIParent = 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: geterrorhandler, LibStub
-
---local con = LibStub("AceConsole-3.0",true)
-
 AceGUI.WidgetRegistry = AceGUI.WidgetRegistry or {}
 AceGUI.LayoutRegistry = AceGUI.LayoutRegistry or {}
 AceGUI.WidgetBase = AceGUI.WidgetBase or {}
@@ -94,38 +88,38 @@ do
 	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
-	function newWidget(type)
-		if not WidgetRegistry[type] then
+	function newWidget(widgetType)
+		if not WidgetRegistry[widgetType] then
 			error("Attempt to instantiate unknown widget type", 2)
 		end

-		if not objPools[type] then
-			objPools[type] = {}
+		if not objPools[widgetType] then
+			objPools[widgetType] = {}
 		end

-		local newObj = next(objPools[type])
+		local newObj = next(objPools[widgetType])
 		if not newObj then
-			newObj = WidgetRegistry[type]()
-			newObj.AceGUIWidgetVersion = WidgetVersions[type]
+			newObj = WidgetRegistry[widgetType]()
+			newObj.AceGUIWidgetVersion = WidgetVersions[widgetType]
 		else
-			objPools[type][newObj] = nil
+			objPools[widgetType][newObj] = nil
 			-- if the widget is older then the latest, don't even try to reuse it
 			-- just forget about it, and grab a new one.
-			if not newObj.AceGUIWidgetVersion or newObj.AceGUIWidgetVersion < WidgetVersions[type] then
-				return newWidget(type)
+			if not newObj.AceGUIWidgetVersion or newObj.AceGUIWidgetVersion < WidgetVersions[widgetType] then
+				return newWidget(widgetType)
 			end
 		end
 		return newObj
 	end
 	-- Releases an instance to the Pool
-	function delWidget(obj,type)
-		if not objPools[type] then
-			objPools[type] = {}
+	function delWidget(obj,widgetType)
+		if not objPools[widgetType] then
+			objPools[widgetType] = {}
 		end
-		if objPools[type][obj] then
+		if objPools[widgetType][obj] then
 			error("Attempt to Release Widget that is already released", 2)
 		end
-		objPools[type][obj] = true
+		objPools[widgetType][obj] = true
 	end
 end

@@ -141,9 +135,9 @@ end
 -- OnAcquire function on it, before returning.
 -- @param type The type of the widget.
 -- @return The newly created widget.
-function AceGUI:Create(type)
-	if WidgetRegistry[type] then
-		local widget = newWidget(type)
+function AceGUI:Create(widgetType)
+	if WidgetRegistry[widgetType] then
+		local widget = newWidget(widgetType)

 		if rawget(widget, "Acquire") then
 			widget.OnAcquire = widget.Acquire
@@ -161,7 +155,7 @@ function AceGUI:Create(type)
 		if widget.OnAcquire then
 			widget:OnAcquire()
 		else
-			error(("Widget type %s doesn't supply an OnAcquire Function"):format(type))
+			error(("Widget type %s doesn't supply an OnAcquire Function"):format(widgetType))
 		end
 		-- Set the default Layout ("List")
 		safecall(widget.SetLayout, widget, "List")
@@ -589,25 +583,25 @@ AceGUI.counts = AceGUI.counts or {}
 -- This is used by widgets that require a named frame, e.g. when a Blizzard
 -- Template requires it.
 -- @param type The widget type
-function AceGUI:GetNextWidgetNum(type)
-	if not self.counts[type] then
-		self.counts[type] = 0
+function AceGUI:GetNextWidgetNum(widgetType)
+	if not self.counts[widgetType] then
+		self.counts[widgetType] = 0
 	end
-	self.counts[type] = self.counts[type] + 1
-	return self.counts[type]
+	self.counts[widgetType] = self.counts[widgetType] + 1
+	return self.counts[widgetType]
 end

 --- Return the number of created widgets for this type.
 -- In contrast to GetNextWidgetNum, the number is not incremented.
--- @param type The widget type
-function AceGUI:GetWidgetCount(type)
-	return self.counts[type] or 0
+-- @param widgetType The widget type
+function AceGUI:GetWidgetCount(widgetType)
+	return self.counts[widgetType] or 0
 end

 --- Return the version of the currently registered widget type.
--- @param type The widget type
-function AceGUI:GetWidgetVersion(type)
-	return WidgetVersions[type]
+-- @param widgetType The widget type
+function AceGUI:GetWidgetVersion(widgetType)
+	return WidgetVersions[widgetType]
 end

 -------------
@@ -770,7 +764,6 @@ AceGUI:RegisterLayout("Flow",

 				usedwidth = 0
 				rowstart = frame
-				rowstartoffset = frameoffset

 				if child.DoLayout then
 					child:DoLayout()
@@ -813,7 +806,8 @@ local GetCellAlign = function (dir, tableObj, colObj, cellObj, cell, child)
 			or colObj and (colObj["align" .. dir] or colObj.align)
 			or tableObj["align" .. dir] or tableObj.align
 			or "CENTERLEFT"
-	local child, cell, val = child or 0, cell or 0, nil
+	local val
+	child, cell = child or 0, cell or 0

 	if type(fn) == "string" then
 		fn = fn:lower()
@@ -827,7 +821,7 @@ local GetCellAlign = function (dir, tableObj, colObj, cellObj, cell, child)
 		val = fn
 	end

-	return fn, max(0, min(val, cell))
+	return fn, math_max(0, math_min(val, cell))
 end

 -- Get width or height for multiple cells combined
@@ -836,7 +830,7 @@ local GetCellDimension = function (dir, laneDim, from, to, space)
 	for cell=from,to do
 		dim = dim + (laneDim[cell] or 0)
 	end
-	return dim + max(0, to - from) * (space or 0)
+	return dim + math_max(0, to - from) * (space or 0)
 end

 --[[ Options
@@ -882,7 +876,7 @@ AceGUI:RegisterLayout("Table",
 				repeat
 					n = n + 1
 					local col = (n - 1) % #cols + 1
-					local row = ceil(n / #cols)
+					local row = math_ceil(n / #cols)
 					local rowspan = rowspans[col]
 					local cell = rowspan and rowspan.child or child
 					local cellObj = cell:GetUserData("cell")
@@ -898,7 +892,7 @@ AceGUI:RegisterLayout("Table",
 					end

 					-- Colspan
-					local colspan = max(0, min((cellObj and cellObj.colspan or 1) - 1, #cols - col))
+					local colspan = math_max(0, math_min((cellObj and cellObj.colspan or 1) - 1, #cols - col))
 					n = n + colspan

 					-- Place the cell
@@ -915,7 +909,7 @@ AceGUI:RegisterLayout("Table",
 			end
 		end

-		local rows = ceil(n / #cols)
+		local rows = math_ceil(n / #cols)

 		-- Determine fixed size cols and collect weights
 		local extantH, totalWeight = totalH, 0
@@ -940,16 +934,16 @@ AceGUI:RegisterLayout("Table",
 							f:ClearAllPoints()
 							local childH = f:GetWidth() or 0

-							laneH[col] = max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH))
+							laneH[col] = math_max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH))
 						end
 					end

-					laneH[col] = max(colObj.min or colObj[1] or 0, min(laneH[col], colObj.max or colObj[2] or laneH[col]))
+					laneH[col] = math_max(colObj.min or colObj[1] or 0, math_min(laneH[col], colObj.max or colObj[2] or laneH[col]))
 				else
 					-- Rel./Abs. width
 					laneH[col] = colObj.width < 1 and colObj.width * totalH or colObj.width
 				end
-				extantH = max(0, extantH - laneH[col])
+				extantH = math_max(0, extantH - laneH[col])
 			end
 		end

@@ -988,7 +982,7 @@ AceGUI:RegisterLayout("Table",
 						child:DoLayout()
 					end

-					rowV = max(rowV, (f:GetHeight() or 0) - GetCellDimension("V", laneV, rowStart[child], row - 1, spaceV))
+					rowV = math_max(rowV, (f:GetHeight() or 0) - GetCellDimension("V", laneV, rowStart[child], row - 1, spaceV))
 				end
 			end

diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua
index 200fc71..bf1eae7 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua
@@ -2,7 +2,7 @@
 BlizOptionsGroup Container
 Simple container widget for the integration of AceGUI into the Blizzard Interface Options
 -------------------------------------------------------------------------------]]
-local Type, Version = "BlizOptionsGroup", 21
+local Type, Version = "BlizOptionsGroup", 26
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -99,7 +99,7 @@ local methods = {
 Constructor
 -------------------------------------------------------------------------------]]
 local function Constructor()
-	local frame = CreateFrame("Frame")
+	local frame = CreateFrame("Frame", nil, InterfaceOptionsFramePanelContainer)
 	frame:Hide()

 	-- support functions for the Blizzard Interface Options
@@ -108,6 +108,11 @@ local function Constructor()
 	frame.default = default
 	frame.refresh = refresh

+	-- 10.0 support function aliases (cancel has been removed)
+	frame.OnCommit = okay
+	frame.OnDefault = default
+	frame.OnRefresh = refresh
+
 	frame:SetScript("OnHide", OnHide)
 	frame:SetScript("OnShow", OnShow)

diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua
index c4c6092..2322e3d 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua
@@ -125,7 +125,7 @@ local function Constructor()
 	dropdown.frame:Show()
 	dropdown:SetLabel("")

-	local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	local border = CreateFrame("Frame", nil, frame, "BackdropTemplate")
 	border:SetPoint("TOPLEFT", 0, -26)
 	border:SetPoint("BOTTOMRIGHT", 0, 3)
 	border:SetBackdrop(PaneBackdrop)
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua
index 5fef676..ca90890 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua
@@ -1,7 +1,7 @@
 --[[-----------------------------------------------------------------------------
 Frame Container
 -------------------------------------------------------------------------------]]
-local Type, Version = "Frame", 27
+local Type, Version = "Frame", 30
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -13,10 +13,6 @@ local wipe = table.wipe
 local PlaySound = PlaySound
 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: CLOSE
-
 --[[-----------------------------------------------------------------------------
 Scripts
 -------------------------------------------------------------------------------]]
@@ -83,6 +79,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,16 +176,21 @@ local PaneBackdrop  = {
 }

 local function Constructor()
-	local frame = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	local frame = CreateFrame("Frame", nil, UIParent, "BackdropTemplate")
 	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)
+	if frame.SetResizeBounds then -- WoW 10.0
+		frame:SetResizeBounds(400, 200)
+	else
+		frame:SetMinResize(400, 200)
+	end
 	frame:SetToplevel(true)
 	frame:SetScript("OnShow", Frame_OnShow)
 	frame:SetScript("OnHide", Frame_OnClose)
@@ -201,7 +203,7 @@ local function Constructor()
 	closebutton:SetWidth(100)
 	closebutton:SetText(CLOSE)

-	local statusbg = CreateFrame("Button", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	local statusbg = CreateFrame("Button", nil, frame, "BackdropTemplate")
 	statusbg:SetPoint("BOTTOMLEFT", 15, 15)
 	statusbg:SetPoint("BOTTOMRIGHT", -132, 15)
 	statusbg:SetHeight(24)
@@ -269,7 +271,7 @@ local function Constructor()
 	line2:SetHeight(8)
 	line2:SetPoint("BOTTOMRIGHT", -8, 8)
 	line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
-	local x = 0.1 * 8/17
+	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)

 	local sizer_s = CreateFrame("Frame", nil, frame)
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua
index 26db900..04b4d5d 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua
@@ -75,7 +75,7 @@ local function Constructor()
 	titletext:SetJustifyH("LEFT")
 	titletext:SetHeight(18)

-	local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	local border = CreateFrame("Frame", nil, frame, "BackdropTemplate")
 	border:SetPoint("TOPLEFT", 0, -17)
 	border:SetPoint("BOTTOMRIGHT", -1, 3)
 	border:SetBackdrop(PaneBackdrop)
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua
index 306c719..8a5756f 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua
@@ -2,22 +2,18 @@
 TabGroup Container
 Container that uses tabs on top to switch between groups.
 -------------------------------------------------------------------------------]]
-local Type, Version = "TabGroup", 37
+local Type, Version = "TabGroup", 38
 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
 local CreateFrame, UIParent = CreateFrame, UIParent
 local _G = _G

--- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
--- List them here for Mikk's FindGlobals script
--- GLOBALS: PanelTemplates_TabResize, PanelTemplates_SetDisabledTabState, PanelTemplates_SelectTab, PanelTemplates_DeselectTab
-
 -- local upvalue storage used by BuildTabs
 local widths = {}
 local rowwidths = {}
@@ -26,6 +22,143 @@ local rowends = {}
 --[[-----------------------------------------------------------------------------
 Support functions
 -------------------------------------------------------------------------------]]
+
+local function PanelTemplates_TabResize(tab, padding, absoluteSize, minWidth, maxWidth, absoluteTextSize)
+	local tabName = tab:GetName();
+
+	local buttonMiddle = tab.Middle or tab.middleTexture or _G[tabName.."Middle"];
+	local buttonMiddleDisabled = tab.MiddleDisabled or (tabName and _G[tabName.."MiddleDisabled"]);
+	local left = tab.Left or tab.leftTexture or _G[tabName.."Left"];
+	local sideWidths = 2 * left:GetWidth();
+	local tabText = tab.Text or _G[tab:GetName().."Text"];
+	local highlightTexture = tab.HighlightTexture or (tabName and _G[tabName.."HighlightTexture"]);
+
+	local width, tabWidth;
+	local textWidth;
+	if ( absoluteTextSize ) then
+		textWidth = absoluteTextSize;
+	else
+		tabText:SetWidth(0);
+		textWidth = tabText:GetWidth();
+	end
+	-- If there's an absolute size specified then use it
+	if ( absoluteSize ) then
+		if ( absoluteSize < sideWidths) then
+			width = 1;
+			tabWidth = sideWidths
+		else
+			width = absoluteSize - sideWidths;
+			tabWidth = absoluteSize
+		end
+		tabText:SetWidth(width);
+	else
+		-- Otherwise try to use padding
+		if ( padding ) then
+			width = textWidth + padding;
+		else
+			width = textWidth + 24;
+		end
+		-- If greater than the maxWidth then cap it
+		if ( maxWidth and width > maxWidth ) then
+			if ( padding ) then
+				width = maxWidth + padding;
+			else
+				width = maxWidth + 24;
+			end
+			tabText:SetWidth(width);
+		else
+			tabText:SetWidth(0);
+		end
+		if (minWidth and width < minWidth) then
+			width = minWidth;
+		end
+		tabWidth = width + sideWidths;
+	end
+
+	if ( buttonMiddle ) then
+		buttonMiddle:SetWidth(width);
+	end
+	if ( buttonMiddleDisabled ) then
+		buttonMiddleDisabled:SetWidth(width);
+	end
+
+	tab:SetWidth(tabWidth);
+
+	if ( highlightTexture ) then
+		highlightTexture:SetWidth(tabWidth);
+	end
+end
+
+local function PanelTemplates_DeselectTab(tab)
+	local name = tab:GetName();
+
+	local left = tab.Left or _G[name.."Left"];
+	local middle = tab.Middle or _G[name.."Middle"];
+	local right = tab.Right or _G[name.."Right"];
+	left:Show();
+	middle:Show();
+	right:Show();
+	--tab:UnlockHighlight();
+	tab:Enable();
+	local text = tab.Text or _G[name.."Text"];
+	text:SetPoint("CENTER", tab, "CENTER", (tab.deselectedTextX or 0), (tab.deselectedTextY or 2));
+
+	local leftDisabled = tab.LeftDisabled or _G[name.."LeftDisabled"];
+	local middleDisabled = tab.MiddleDisabled or _G[name.."MiddleDisabled"];
+	local rightDisabled = tab.RightDisabled or _G[name.."RightDisabled"];
+	leftDisabled:Hide();
+	middleDisabled:Hide();
+	rightDisabled:Hide();
+end
+
+local function PanelTemplates_SelectTab(tab)
+	local name = tab:GetName();
+
+	local left = tab.Left or _G[name.."Left"];
+	local middle = tab.Middle or _G[name.."Middle"];
+	local right = tab.Right or _G[name.."Right"];
+	left:Hide();
+	middle:Hide();
+	right:Hide();
+	--tab:LockHighlight();
+	tab:Disable();
+	tab:SetDisabledFontObject(GameFontHighlightSmall);
+	local text = tab.Text or _G[name.."Text"];
+	text:SetPoint("CENTER", tab, "CENTER", (tab.selectedTextX or 0), (tab.selectedTextY or -3));
+
+	local leftDisabled = tab.LeftDisabled or _G[name.."LeftDisabled"];
+	local middleDisabled = tab.MiddleDisabled or _G[name.."MiddleDisabled"];
+	local rightDisabled = tab.RightDisabled or _G[name.."RightDisabled"];
+	leftDisabled:Show();
+	middleDisabled:Show();
+	rightDisabled:Show();
+
+	if GameTooltip:IsOwned(tab) then
+		GameTooltip:Hide();
+	end
+end
+
+local function PanelTemplates_SetDisabledTabState(tab)
+	local name = tab:GetName();
+	local left = tab.Left or _G[name.."Left"];
+	local middle = tab.Middle or _G[name.."Middle"];
+	local right = tab.Right or _G[name.."Right"];
+	left:Show();
+	middle:Show();
+	right:Show();
+	--tab:UnlockHighlight();
+	tab:Disable();
+	tab.text = tab:GetText();
+	-- Gray out text
+	tab:SetDisabledFontObject(GameFontDisableSmall);
+	local leftDisabled = tab.LeftDisabled or _G[name.."LeftDisabled"];
+	local middleDisabled = tab.MiddleDisabled or _G[name.."MiddleDisabled"];
+	local rightDisabled = tab.RightDisabled or _G[name.."RightDisabled"];
+	leftDisabled:Hide();
+	middleDisabled:Hide();
+	rightDisabled:Hide();
+end
+
 local function UpdateTabLook(frame)
 	if frame.disabled then
 		PanelTemplates_SetDisabledTabState(frame)
@@ -103,11 +236,64 @@ local methods = {

 	["CreateTab"] = function(self, id)
 		local tabname = ("AceGUITabGroup%dTab%d"):format(self.num, id)
-		local tab = CreateFrame("Button", tabname, self.border, "OptionsFrameTabButtonTemplate")
+		local tab = CreateFrame("Button", tabname, self.border)
+		tab:SetSize(115, 24)
+		tab.deselectedTextY = -3
+		tab.selectedTextY = -2
+
+		tab.LeftDisabled = tab:CreateTexture(tabname .. "LeftDisabled", "BORDER")
+		tab.LeftDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab")
+		tab.LeftDisabled:SetSize(20, 24)
+		tab.LeftDisabled:SetPoint("BOTTOMLEFT", 0, -3)
+		tab.LeftDisabled:SetTexCoord(0, 0.15625, 0, 1.0)
+
+		tab.MiddleDisabled = tab:CreateTexture(tabname .. "MiddleDisabled", "BORDER")
+		tab.MiddleDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab")
+		tab.MiddleDisabled:SetSize(88, 24)
+		tab.MiddleDisabled:SetPoint("LEFT", tab.LeftDisabled, "RIGHT")
+		tab.MiddleDisabled:SetTexCoord(0.15625, 0.84375, 0, 1.0)
+
+		tab.RightDisabled = tab:CreateTexture(tabname .. "RightDisabled", "BORDER")
+		tab.RightDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab")
+		tab.RightDisabled:SetSize(20, 24)
+		tab.RightDisabled:SetPoint("LEFT", tab.MiddleDisabled, "RIGHT")
+		tab.RightDisabled:SetTexCoord(0.84375, 1.0, 0, 1.0)
+
+		tab.Left = tab:CreateTexture(tabname .. "Left", "BORDER")
+		tab.Left:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab")
+		tab.Left:SetSize(20, 24)
+		tab.Left:SetPoint("TOPLEFT")
+		tab.Left:SetTexCoord(0, 0.15625, 0, 1.0)
+
+		tab.Middle = tab:CreateTexture(tabname .. "Middle", "BORDER")
+		tab.Middle:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab")
+		tab.Middle:SetSize(88, 24)
+		tab.Middle:SetPoint("LEFT", tab.Left, "RIGHT")
+		tab.Middle:SetTexCoord(0.15625, 0.84375, 0, 1.0)
+
+		tab.Right = tab:CreateTexture(tabname .. "Right", "BORDER")
+		tab.Right:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab")
+		tab.Right:SetSize(20, 24)
+		tab.Right:SetPoint("LEFT", tab.Middle, "RIGHT")
+		tab.Right:SetTexCoord(0.84375, 1.0, 0, 1.0)
+
+		tab.Text = tab:CreateFontString(tabname .. "Text")
+		tab:SetFontString(tab.Text)
+
+		tab:SetNormalFontObject(GameFontNormalSmall)
+		tab:SetHighlightFontObject(GameFontHighlightSmall)
+		tab:SetDisabledFontObject(GameFontHighlightSmall)
+		tab:SetHighlightTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight", "ADD")
+		tab.HighlightTexture = tab:GetHighlightTexture()
+		tab.HighlightTexture:ClearAllPoints()
+		tab.HighlightTexture:SetPoint("LEFT", tab, "LEFT", 10, -4)
+		tab.HighlightTexture:SetPoint("RIGHT", tab, "RIGHT", -10, -4)
+		_G[tabname .. "HighlightTexture"] = tab.HighlightTexture
+
 		tab.obj = self
 		tab.id = id

-		tab.text = _G[tabname .. "Text"]
+		tab.text = tab.Text -- compat
 		tab.text:ClearAllPoints()
 		tab.text:SetPoint("LEFT", 14, -3)
 		tab.text:SetPoint("RIGHT", -12, -3)
@@ -316,7 +502,7 @@ local function Constructor()
 	titletext:SetHeight(18)
 	titletext:SetText("")

-	local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	local border = CreateFrame("Frame", nil, frame, "BackdropTemplate")
 	border:SetPoint("TOPLEFT", 1, -27)
 	border:SetPoint("BOTTOMRIGHT", -1, 3)
 	border:SetBackdrop(PaneBackdrop)
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
index c09c5ec..ca9b2df 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
@@ -2,22 +2,18 @@
 TreeGroup Container
 Container that uses a tree control to switch between groups.
 -------------------------------------------------------------------------------]]
-local Type, Version = "TreeGroup", 45
+local Type, Version = "TreeGroup", 47
 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 next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type
-local math_min, math_max, floor = math.min, math.max, floor
+local math_min, math_max, floor = math.min, math.max, math.floor
 local select, tremove, unpack, tconcat = select, table.remove, unpack, table.concat

 -- 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: FONT_COLOR_CODE_CLOSE
-
 -- Recycling functions
 local new, del
 do
@@ -567,7 +563,11 @@ local methods = {
 		if maxtreewidth > 100 and status.treewidth > maxtreewidth then
 			self:SetTreeWidth(maxtreewidth, status.treesizable)
 		end
-		treeframe:SetMaxResize(maxtreewidth, 1600)
+		if treeframe.SetResizeBounds then
+			treeframe:SetResizeBounds(100, 1, maxtreewidth, 1600)
+		else
+			treeframe:SetMaxResize(maxtreewidth, 1600)
+		end
 	end,

 	["OnHeightSet"] = function(self, height)
@@ -637,7 +637,7 @@ local function Constructor()
 	local num = AceGUI:GetNextWidgetNum(Type)
 	local frame = CreateFrame("Frame", nil, UIParent)

-	local treeframe = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	local treeframe = CreateFrame("Frame", nil, frame, "BackdropTemplate")
 	treeframe:SetPoint("TOPLEFT")
 	treeframe:SetPoint("BOTTOMLEFT")
 	treeframe:SetWidth(DEFAULT_TREE_WIDTH)
@@ -646,13 +646,17 @@ local function Constructor()
 	treeframe:SetBackdropColor(0.1, 0.1, 0.1, 0.5)
 	treeframe:SetBackdropBorderColor(0.4, 0.4, 0.4)
 	treeframe:SetResizable(true)
-	treeframe:SetMinResize(100, 1)
-	treeframe:SetMaxResize(400, 1600)
+	if treeframe.SetResizeBounds then -- WoW 10.0
+		treeframe:SetResizeBounds(100, 1, 400, 1600)
+	else
+		treeframe:SetMinResize(100, 1)
+		treeframe:SetMaxResize(400, 1600)
+	end
 	treeframe:SetScript("OnUpdate", FirstFrameUpdate)
 	treeframe:SetScript("OnSizeChanged", Tree_OnSizeChanged)
 	treeframe:SetScript("OnMouseWheel", Tree_OnMouseWheel)

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

-	local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	local border = CreateFrame("Frame", nil, frame, "BackdropTemplate")
 	border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT")
 	border:SetPoint("BOTTOMRIGHT")
 	border:SetBackdrop(PaneBackdrop)
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua
index a9192b3..5729bfd 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua
@@ -7,10 +7,6 @@ local pairs, assert, type = pairs, assert, type
 local PlaySound = PlaySound
 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: GameFontNormal
-
 ----------------
 -- Main Frame --
 ----------------
@@ -21,7 +17,7 @@ local CreateFrame, UIParent = CreateFrame, UIParent
 ]]
 do
 	local Type = "Window"
-	local Version = 6
+	local Version = 8

 	local function frameOnShow(this)
 		this.obj:Fire("OnShow")
@@ -186,7 +182,11 @@ do

 		frame:SetScript("OnShow",frameOnShow)
 		frame:SetScript("OnHide",frameOnClose)
-		frame:SetMinResize(240,240)
+		if frame.SetResizeBounds then -- WoW 10.0
+			frame:SetResizeBounds(240,240)
+		else
+			frame:SetMinResize(240,240)
+		end
 		frame:SetToplevel(true)

 		local titlebg = frame:CreateTexture(nil, "BACKGROUND")
@@ -300,7 +300,7 @@ do
 		line2:SetHeight(8)
 		line2:SetPoint("BOTTOMRIGHT", -8, 8)
 		line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
-		local x = 0.1 * 8/17
+		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)

 		local sizer_s = CreateFrame("Frame",nil,frame)
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua
index d2adb88..6e64292 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua
@@ -12,10 +12,6 @@ local select, pairs = select, pairs
 local PlaySound = PlaySound
 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: SetDesaturation, GameFontHighlight
-
 --[[-----------------------------------------------------------------------------
 Support functions
 -------------------------------------------------------------------------------]]
@@ -199,14 +195,14 @@ local methods = {
 	["SetDescription"] = function(self, desc)
 		if desc then
 			if not self.desc then
-				local desc = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall")
-				desc:ClearAllPoints()
-				desc:SetPoint("TOPLEFT", self.checkbg, "TOPRIGHT", 5, -21)
-				desc:SetWidth(self.frame.width - 30)
-				desc:SetPoint("RIGHT", self.frame, "RIGHT", -30, 0)
-				desc:SetJustifyH("LEFT")
-				desc:SetJustifyV("TOP")
-				self.desc = desc
+				local f = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall")
+				f:ClearAllPoints()
+				f:SetPoint("TOPLEFT", self.checkbg, "TOPRIGHT", 5, -21)
+				f:SetWidth(self.frame.width - 30)
+				f:SetPoint("RIGHT", self.frame, "RIGHT", -30, 0)
+				f:SetJustifyH("LEFT")
+				f:SetJustifyV("TOP")
+				self.desc = f
 			end
 			self.desc:Show()
 			--self.text:SetFontObject(GameFontNormal)
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
index f4cab66..699d583 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
@@ -11,10 +11,6 @@ local pairs = 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: ColorPickerFrame, OpacitySliderFrame
-
 --[[-----------------------------------------------------------------------------
 Support functions
 -------------------------------------------------------------------------------]]
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua
index 9dd4b60..0ad94f8 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua
@@ -1,4 +1,4 @@
---[[ $Id: AceGUIWidget-DropDown-Items.lua 1202 2019-05-15 23:11:22Z nevcairiel $ ]]--
+--[[ $Id: AceGUIWidget-DropDown-Items.lua 1272 2022-08-29 15:56:35Z nevcairiel $ ]]--

 local AceGUI = LibStub("AceGUI-3.0")

@@ -41,7 +41,7 @@ local ItemBase = {
 	-- NOTE: The ItemBase version is added to each item's version number
 	--       to ensure proper updates on ItemBase changes.
 	--       Use at least 1000er steps.
-	version = 1000,
+	version = 2000,
 	counter = 0,
 }

@@ -178,7 +178,7 @@ function ItemBase.Create(type)
 	highlight:Hide()
 	self.highlight = highlight

-	local check = frame:CreateTexture("OVERLAY")
+	local check = frame:CreateTexture(nil, "OVERLAY")
 	check:SetWidth(16)
 	check:SetHeight(16)
 	check:SetPoint("LEFT",frame,"LEFT",3,-1)
@@ -186,7 +186,7 @@ function ItemBase.Create(type)
 	check:Hide()
 	self.check = check

-	local sub = frame:CreateTexture("OVERLAY")
+	local sub = frame:CreateTexture(nil, "OVERLAY")
 	sub:SetWidth(16)
 	sub:SetHeight(16)
 	sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1)
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
index 94c5ded..3d8dd11 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
@@ -1,4 +1,4 @@
---[[ $Id: AceGUIWidget-DropDown.lua 1239 2020-09-20 10:22:02Z nevcairiel $ ]]--
+--[[ $Id: AceGUIWidget-DropDown.lua 1284 2022-09-25 09:15:30Z nevcairiel $ ]]--
 local AceGUI = LibStub("AceGUI-3.0")

 -- Lua APIs
@@ -11,10 +11,6 @@ local PlaySound = PlaySound
 local UIParent, CreateFrame = UIParent, CreateFrame
 local _G = _G

--- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
--- List them here for Mikk's FindGlobals script
--- GLOBALS: CLOSE
-
 local function fixlevels(parent,...)
 	local i = 1
 	local child = select(i, ...)
@@ -253,7 +249,7 @@ do

 	local function Constructor()
 		local count = AceGUI:GetNextWidgetNum(widgetType)
-		local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
+		local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent, "BackdropTemplate")
 		local self = {}
 		self.count = count
 		self.type = widgetType
@@ -304,7 +300,7 @@ do
 		scrollFrame.obj = self
 		itemFrame.obj = self

-		local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+		local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame, "BackdropTemplate")
 		slider:SetOrientation("VERTICAL")
 		slider:SetHitRectInsets(0, 0, -10, 0)
 		slider:SetBackdrop(sliderBackdrop)
@@ -351,7 +347,7 @@ end

 do
 	local widgetType = "Dropdown"
-	local widgetVersion = 35
+	local widgetVersion = 36

 	--[[ Static data ]]--

@@ -376,7 +372,6 @@ do

 	local function Dropdown_TogglePullout(this)
 		local self = this.obj
-		PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON
 		if self.open then
 			self.open = nil
 			self.pullout:Close()
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua
index cc1b6a3..85a32a0 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua
@@ -14,10 +14,6 @@ local GetCursorInfo, ClearCursor, GetSpellInfo = GetCursorInfo, ClearCursor, Get
 local CreateFrame, UIParent = CreateFrame, UIParent
 local _G = _G

--- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
--- List them here for Mikk's FindGlobals script
--- GLOBALS: AceGUIEditBoxInsertLink, ChatFontNormal, OKAY
-
 --[[-----------------------------------------------------------------------------
 Support functions
 -------------------------------------------------------------------------------]]
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua
index b195e0c..96f7e5b 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua
@@ -13,10 +13,6 @@ local pairs = pairs
 local IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown = IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown
 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: NOT_BOUND
-
 --[[-----------------------------------------------------------------------------
 Scripts
 -------------------------------------------------------------------------------]]
@@ -214,7 +210,7 @@ local function Constructor()
 	label:SetJustifyH("CENTER")
 	label:SetHeight(18)

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

@@ -12,10 +12,6 @@ local max, select, pairs = math.max, 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
-
 --[[-----------------------------------------------------------------------------
 Support functions
 -------------------------------------------------------------------------------]]
@@ -129,12 +125,16 @@ local methods = {
 	end,

 	["SetFont"] = function(self, font, height, flags)
-		self.label:SetFont(font, height, flags)
-		UpdateImageAnchor(self)
+		if not self.fontObject then
+			self.fontObject = CreateFont("AceGUI30LabelFont" .. AceGUI:GetNextWidgetNum(Type))
+		end
+		self.fontObject:SetFont(font, height, flags)
+		self:SetFontObject(self.fontObject)
 	end,

 	["SetFontObject"] = function(self, font)
-		self:SetFont((font or GameFontHighlightSmall):GetFont())
+		self.label:SetFontObject(font or GameFontHighlightSmall)
+		UpdateImageAnchor(self)
 	end,

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

@@ -10,10 +10,6 @@ local GetCursorInfo, GetSpellInfo, ClearCursor = GetCursorInfo, GetSpellInfo, Cl
 local CreateFrame, UIParent = CreateFrame, UIParent
 local _G = _G

--- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
--- List them here for Mikk's FindGlobals script
--- GLOBALS: ACCEPT, ChatFontNormal
-
 --[[-----------------------------------------------------------------------------
 Support functions
 -------------------------------------------------------------------------------]]
@@ -145,6 +141,14 @@ local function OnVerticalScroll(self, offset)
 	editBox:SetHitRectInsets(0, 0, offset, editBox:GetHeight() - offset - self:GetHeight())
 end

+local function OnScrollRangeChanged(self, xrange, yrange)
+	if yrange == 0 then
+		self.obj.editBox:SetHitRectInsets(0, 0, 0, 0)
+	else
+		OnVerticalScroll(self, self:GetVerticalScroll())
+	end
+end
+
 local function OnShowFocus(frame)
 	frame.obj.editBox:SetFocus()
 	frame:SetScript("OnShow", nil)
@@ -257,8 +261,6 @@ local methods = {
 	["SetCursorPosition"] = function(self, ...)
 		return self.editBox:SetCursorPosition(...)
 	end,
-
-
 }

 --[[-----------------------------------------------------------------------------
@@ -297,7 +299,7 @@ local function Constructor()
 	text:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -5, 1)
 	text:SetJustifyV("MIDDLE")

-	local scrollBG = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	local scrollBG = CreateFrame("Frame", nil, frame, "BackdropTemplate")
 	scrollBG:SetBackdrop(backdrop)
 	scrollBG:SetBackdropColor(0, 0, 0)
 	scrollBG:SetBackdropBorderColor(0.4, 0.4, 0.4)
@@ -321,6 +323,7 @@ local function Constructor()
 	scrollFrame:SetScript("OnReceiveDrag", OnReceiveDrag)
 	scrollFrame:SetScript("OnSizeChanged", OnSizeChanged)
 	scrollFrame:HookScript("OnVerticalScroll", OnVerticalScroll)
+	scrollFrame:HookScript("OnScrollRangeChanged", OnScrollRangeChanged)

 	local editBox = CreateFrame("EditBox", ("%s%dEdit"):format(Type, widgetNum), scrollFrame)
 	editBox:SetAllPoints()
diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
index ea655b6..8989608 100755
--- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
+++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
@@ -14,10 +14,6 @@ local tonumber, pairs = tonumber, pairs
 local PlaySound = PlaySound
 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
-
 --[[-----------------------------------------------------------------------------
 Support functions
 -------------------------------------------------------------------------------]]
@@ -31,13 +27,13 @@ local function UpdateText(self)
 end

 local function UpdateLabels(self)
-	local min, max = (self.min or 0), (self.max or 100)
+	local min_value, max_value = (self.min or 0), (self.max or 100)
 	if self.ispercent then
-		self.lowtext:SetFormattedText("%s%%", (min * 100))
-		self.hightext:SetFormattedText("%s%%", (max * 100))
+		self.lowtext:SetFormattedText("%s%%", (min_value * 100))
+		self.hightext:SetFormattedText("%s%%", (max_value * 100))
 	else
-		self.lowtext:SetText(min)
-		self.hightext:SetText(max)
+		self.lowtext:SetText(min_value)
+		self.hightext:SetText(max_value)
 	end
 end

@@ -175,13 +171,13 @@ local methods = {
 		self.label:SetText(text)
 	end,

-	["SetSliderValues"] = function(self, min, max, step)
+	["SetSliderValues"] = function(self, min_value, max_value, step)
 		local frame = self.slider
 		frame.setup = true
-		self.min = min
-		self.max = max
+		self.min = min_value
+		self.max = max_value
 		self.step = step
-		frame:SetMinMaxValues(min or 0,max or 100)
+		frame:SetMinMaxValues(min_value or 0,max_value or 100)
 		UpdateLabels(self)
 		frame:SetValueStep(step or 1)
 		if self.value then
@@ -225,7 +221,7 @@ local function Constructor()
 	label:SetJustifyH("CENTER")
 	label:SetHeight(15)

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

-	local editbox = CreateFrame("EditBox", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
+	local editbox = CreateFrame("EditBox", nil, frame, "BackdropTemplate")
 	editbox:SetAutoFocus(false)
 	editbox:SetFontObject(GameFontHighlightSmall)
 	editbox:SetPoint("TOP", slider, "BOTTOM")
diff --git a/TitanBag/TitanBag.lua b/TitanBag/TitanBag.lua
index 0bcfa8f..3846d38 100644
--- a/TitanBag/TitanBag.lua
+++ b/TitanBag/TitanBag.lua
@@ -230,19 +230,39 @@ local function GetButtonText(id)
 	local availableProfBagSlots = {0,0,0,0,0};
 	local bagRichTextProf = {"","","","",""};

+	-- DF difference between betga and ptr??
+	local get_bag = nil
+	if C_Container.GetBagName then
+		get_bag = C_Container.GetBagName
+	elseif GetBagName then
+		get_bag = GetBagName
+	end
+	local get_slots = nil
+	if C_Container.GetContainerNumSlots then
+		get_slots = C_Container.GetContainerNumSlots
+	elseif GetContainerNumSlots then
+		get_slots = GetContainerNumSlots
+	end
+	local get_info = nil
+	if C_Container.GetContainerItemInfo then
+		get_info = C_Container.GetContainerItemInfo
+	elseif GetContainerItemInfo then
+		get_info = GetContainerItemInfo
+	end
+
 --[[
 TitanDebug("GetButtonText: >>>")
 --]]
 	totalBagSlots = 0;
 	usedBagSlots = 0;
 	for bag = 0, 4 do -- assuming 0 (Backpack) will not be a profession bag
-		local is_bag, bag_type, color = isBag(GetBagName(bag), bag)
+		local is_bag, bag_type, color = isBag(get_bag(bag), bag)

 		if is_bag then
 			if bag_type == "profession" then -- found a profession bag
 				-- when user wants profession bags counted, they are listed separately in the plugin
 				if TitanGetVar(TITAN_BAG_ID, "CountProfBagSlots") then
-					local size = GetContainerNumSlots(bag);
+					local size = get_slots(bag);
 					if (size and size > 0) then
 						totalProfBagSlots[bag] = size;
 						for slot = 1, size do
@@ -265,11 +285,11 @@ TitanDebug("GetButtonText: >>>")
 					end
 				end
 			elseif bag_type == "normal" then -- not a profession bag so get used & available counts
-				local size = GetContainerNumSlots(bag);
+				local size = get_slots(bag);
 				if (size and size > 0) then
 					totalBagSlots = totalBagSlots + size;
 					for slot = 1, size do
-						if (GetContainerItemInfo(bag, slot)) then
+						if (get_info(bag, slot)) then
 							usedBagSlots = usedBagSlots + 1;
 						end
 					end
@@ -324,6 +344,26 @@ function TitanPanelBagButton_GetTooltipText()
 	local totalSlots, usedSlots, availableSlots;
 	local returnstring = "";

+	-- DF difference between betga and ptr??
+	local get_slots = nil
+	if C_Container.GetContainerNumSlots then
+		get_slots = C_Container.GetContainerNumSlots
+	elseif GetContainerNumSlots then
+		get_slots = GetContainerNumSlots
+	end
+	local get_free = nil
+	if C_Container.GetContainerNumFreeSlots then
+		get_free = C_Container.GetContainerNumFreeSlots
+	elseif GetContainerNumFreeSlots then
+		get_free = GetContainerNumFreeSlots
+	end
+	local get_id = nil
+	if C_Container.ContainerIDToInventoryID then
+		get_id = C_Container.ContainerIDToInventoryID
+	elseif ContainerIDToInventoryID then
+		get_id = ContainerIDToInventoryID
+	end
+
 	if TitanGetVar(TITAN_BAG_ID, "ShowDetailedInfo") then
 		returnstring = "\n";
 		if TitanGetVar(TITAN_BAG_ID, "ShowUsedSlots") then
@@ -335,10 +375,10 @@ function TitanPanelBagButton_GetTooltipText()
 		end

 		for bag = 0, 4 do
-			totalSlots = GetContainerNumSlots(bag) or 0;
-			availableSlots = GetContainerNumFreeSlots(bag) or 0;
+			totalSlots = get_slots(bag) or 0;
+			availableSlots = get_free(bag) or 0;
 			usedSlots = totalSlots - availableSlots;
-			local itemlink  = bag > 0 and GetInventoryItemLink("player", ContainerIDToInventoryID(bag))
+			local itemlink  = bag > 0 and GetInventoryItemLink("player", get_id(bag))
 				or TitanUtils_GetHighlightText(L["TITAN_BAG_BACKPACK"]).. FONT_COLOR_CODE_CLOSE;

 			if itemlink then
@@ -346,7 +386,7 @@ function TitanPanelBagButton_GetTooltipText()
 				itemlink = string.gsub( itemlink, "%]", "" );
 			end

-			if bag > 0 and not GetInventoryItemLink("player", ContainerIDToInventoryID(bag)) then
+			if bag > 0 and not GetInventoryItemLink("player", get_id(bag)) then
 				itemlink = nil;
 			end

diff --git a/TitanBag/TitanBag.toc b/TitanBag/TitanBag.toc
index b6fd6e4..8714300 100644
--- a/TitanBag/TitanBag.toc
+++ b/TitanBag/TitanBag.toc
@@ -1,10 +1,10 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55fBag|r] |cff00aa005.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55fBag|r] |cff00aa006.00.02.100002|r
 ## Notes: Adds bag and free slot information to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: Titan
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## X-Child-Of: Titan
 TitanBag.xml
diff --git a/TitanClock/TitanClock.toc b/TitanClock/TitanClock.toc
index e967c70..ba7058a 100644
--- a/TitanClock/TitanClock.toc
+++ b/TitanClock/TitanClock.toc
@@ -1,10 +1,10 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55fClock|r] |cff00aa005.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55fClock|r] |cff00aa006.00.02.100002|r
 ## Notes: Adds a clock to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: Titan
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## X-Child-Of: Titan
 TitanClock.xml
diff --git a/TitanClock/TitanClock.xml b/TitanClock/TitanClock.xml
index 33b0247..d3374ed 100644
--- a/TitanClock/TitanClock.xml
+++ b/TitanClock/TitanClock.xml
@@ -62,7 +62,9 @@ and set the values in the code.
 					</OnLeave>
 				</Scripts>
 			</Slider>
-			<CheckButton name="TitanPanelClockControlCheckButton" inherits="OptionsCheckButtonTemplate">
+<!-- DF made a change to the options templates
+OptionsCheckButtonTemplate -->
+			<CheckButton name="TitanPanelClockControlCheckButton" inherits="InterfaceOptionsBaseCheckButtonTemplate">
 				<Size>
 					<AbsDimension x="24" y="24"/>
 				</Size>
diff --git a/TitanGold/TitanGold.toc b/TitanGold/TitanGold.toc
index e64fe97..a655e71 100644
--- a/TitanGold/TitanGold.toc
+++ b/TitanGold/TitanGold.toc
@@ -1,10 +1,10 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55fGold|r] |cff00aa005.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55fGold|r] |cff00aa006.00.02.100002|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: Titan
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## X-Child-Of: Titan
 TitanGold.xml
diff --git a/TitanLocation/TitanLocation.lua b/TitanLocation/TitanLocation.lua
index 057f0ad..cde8264 100755
--- a/TitanLocation/TitanLocation.lua
+++ b/TitanLocation/TitanLocation.lua
@@ -122,7 +122,9 @@ function TitanPanelLocationButton_GetButtonText(id)
 		if (TitanUtils_ToString(button.subZoneText) == '') then
 			if (button.zoneText == '') then
 				local _
-				_, _, button.zoneText = C_Map.GetMapInfo(C_Map.GetBestMapUnit("player"));
+-- DF change of API
+--				_, _, button.zoneText = C_Map.GetMapInfo(C_Map.GetBestMapUnit("player"));
+				_, _, button.zoneText = C_Map.GetMapInfo(C_Map.GetBestMapForUnit("player"));
 			end
 			locationText = TitanUtils_ToString(button.zoneText)..' '..locationText;
 		else
@@ -198,19 +200,23 @@ end
 -- **************************************************************************
 --]]
 function TitanPanelLocationButton_OnEvent(self, event, ...)
+-- DF TODO See if we can turn off zone on minimap
+--[=[
 	if event == "PLAYER_ENTERING_WORLD" then
 		if not TitanGetVar(TITAN_LOCATION_ID, "ShowLocOnMiniMap") and MinimapBorderTop and MinimapBorderTop:IsShown() then
 			TitanPanelLocationButton_LocOnMiniMap()
 		end
 	end
-
+--]=]
 	TitanPanelLocationButton_UpdateZoneInfo(self);
 	TitanPanelPluginHandle_OnUpdate(updateTable);
 	TitanPanelLocation_HandleUpdater();
+--[[
 	if TitanGetVar(TITAN_LOCATION_ID, "ShowLocOnMiniMap") and MinimapBorderTop:IsShown() then
 		if not MinimapZoneTextButton:IsShown() then MinimapZoneTextButton:Show() end
 		if not MiniMapWorldMapButton:IsShown() then MiniMapWorldMapButton:Show() end
 	end
+--]]
 end

 --[[
@@ -301,7 +307,7 @@ function TitanPanelRightClickMenu_PrepareLocationMenu()
 			end
 			info.checked = TitanGetVar(TITAN_LOCATION_ID, "ShowCoordsText");
 			TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel());
-
+--[=[
 			info = {};
 			info.text = L["TITAN_LOCATION_MENU_SHOW_COORDS_ON_MAP_TEXT"];
 			info.func = TitanPanelLocationButton_ToggleLocationOnMap;
@@ -317,7 +323,7 @@ function TitanPanelRightClickMenu_PrepareLocationMenu()
 			info.checked = TitanGetVar(TITAN_LOCATION_ID, "ShowLocOnMiniMap");
 			info.disabled = InCombatLockdown()
 			TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel());
-
+--]=]
 			info = {};
 			info.text = L["TITAN_LOCATION_MENU_UPDATE_WORLD_MAP"];
 			info.func = function()
@@ -484,6 +490,12 @@ function TitanMapFrame_OnUpdate(self, elapsed)
 			TitanMapPlayerLocation:SetText("");
 			TitanMapCursorLocation:SetText("");
 		end
+--[==[
+print("TLoc"
+.." c "..tostring(cursorLocationText).." "
+.." p "..tostring(playerLocationText).." "
+)
+--]==]
 end

 --[[
@@ -526,6 +538,7 @@ function TitanPanelLocation_CreateMapFrames()

 		-- create the frame to hold the font strings, and simulate an "OnUpdate" script handler using C_Timer for efficiency
 		local frame = CreateFrame("FRAME", "TitanMapFrame", WorldMapFrame.BorderFrame)
+		frame:SetFrameStrata("DIALOG") -- DF need to raise the strata to be seen
 		local function updateFunc()
 			TitanMapFrame_OnUpdate(frame, 0.07);	-- simulating an OnUpdate call
 		end
@@ -547,13 +560,41 @@ function TitanPanelLocation_CreateMapFrames()
 			cursortext:ClearAllPoints();
 			playertext:SetPoint("TOPRIGHT", WorldMapFrame, "TOPRIGHT", -10, -28)
 			cursortext:SetPoint("TOPRIGHT", WorldMapFrame, "TOPRIGHT", -10, -43)
+--[==[
+print("TLoc max"
+.." p "..tostring(playertext and true or false).." "
+.." c "..tostring(cursortext and true or false).." "
+)
+--]==]
 		end);
 		hooksecurefunc(WorldMapFrame.BorderFrame.MaximizeMinimizeFrame, "Minimize", function()
 			playertext:ClearAllPoints();
 			cursortext:ClearAllPoints();
 			playertext:SetPoint("TOPRIGHT", WorldMapFrame, "TOPRIGHT", -50, -5)
+--			playertext:SetPoint("TOPRIGHT", WorldMapFrame, "TOPRIGHT", -50, 15)
 			cursortext:SetPoint("TOPLEFT", WorldMapFrame, "TOPLEFT", 95, -5)
+--			cursortext:SetPoint("TOPLEFT", WorldMapFrame, "TOPLEFT", 95, 5)
+--[==[
+print("TLoc min"
+.." p "..tostring(playertext and true or false).." "
+.."  "..tostring(playertext:GetText()).." "
+.."  "..tostring(frame:GetFrameStrata()).." "
+.."  "..tostring(frame:GetFrameLevel()).." "
+.." c "..tostring(cursortext and true or false).." "
+.."  "..tostring(cursortext:GetText()).." "
+.."  "..tostring(WorldMapFrame:GetFrameStrata()).." "
+.."  "..tostring(WorldMapFrame:GetFrameLevel()).." "
+)
+--]==]
 		end);
+--[==[
+print("TLoc"
+.." f "..tostring(frame and true or false).." "
+.." ut "..tostring(frame.updateTicker and true or false).." "
+.." p "..tostring(playertext and true or false).." "
+.." c "..tostring(cursortext and true or false).." "
+)
+--]==]

 	end
 end
diff --git a/TitanLocation/TitanLocation.toc b/TitanLocation/TitanLocation.toc
index ce8171e..73edf9c 100644
--- a/TitanLocation/TitanLocation.toc
+++ b/TitanLocation/TitanLocation.toc
@@ -1,10 +1,10 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55fLocation|r] |cff00aa005.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55fLocation|r] |cff00aa006.00.02.100002|r
 ## Notes: Adds coordinates and location information to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: Titan
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## X-Child-Of: Titan
 TitanLocation.xml
diff --git a/TitanLootType/TitanLootType.toc b/TitanLootType/TitanLootType.toc
index cbb394d..9228516 100644
--- a/TitanLootType/TitanLootType.toc
+++ b/TitanLootType/TitanLootType.toc
@@ -1,10 +1,10 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55fLootType|r] |cff00aa005.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55fLootType|r] |cff00aa006.00.02.100002|r
 ## Notes: Adds group loot and instance difficulty information to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: Titan
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## X-Child-Of: Titan
 TitanLootType.xml
diff --git a/TitanPerformance/TitanPerformance.toc b/TitanPerformance/TitanPerformance.toc
index ac91d34..460ccf7 100644
--- a/TitanPerformance/TitanPerformance.toc
+++ b/TitanPerformance/TitanPerformance.toc
@@ -1,10 +1,10 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55fPerformance|r] |cff00aa005.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55fPerformance|r] |cff00aa006.00.02.100002|r
 ## Notes: Adds FPS and Garbage collection information to Titan Panel
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: Titan
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## X-Child-Of: Titan
 TitanPerformance.xml
diff --git a/TitanRepair/TitanRepair.lua b/TitanRepair/TitanRepair.lua
index 7d75928..55b10d9 100644
--- a/TitanRepair/TitanRepair.lua
+++ b/TitanRepair/TitanRepair.lua
@@ -472,7 +472,10 @@ function TitanRepair_GetInventoryInformation(bag)
 	TPR.INVENTORY_STATUS[bag].values.val = 0
 	TPR.INVENTORY_STATUS[bag].values.max = 0
 	TPR.INVENTORY_STATUS[bag].values.cost = 0
-	for slot = 1, GetContainerNumSlots(bag) do
+
+-- DF
+--	for slot = 1, GetContainerNumSlots(bag) do
+	for slot = 1, ContainerFrame_GetContainerNumSlotsWithBase(bag) do
 		-- retrieve item repair status of this slot in the bag
 		local act_status, act_val, act_max, act_cost = TitanRepair_GetStatus(slot, bag);
 		if act_max ~= 0 then
@@ -606,9 +609,18 @@ function TitanRepair_GetStatus(index, bag)
 	--tit_debug_bis("_GetStatus index="..(index or "NIL").." bag="..(bag or "NIL"))
 	TitanRepairTooltip:ClearLines()

+	-- DF difference in Beta versus PTR??
+	local get_dur = nil
+	if C_Container.GetContainerItemDurability then
+		get_dur = C_Container.GetContainerItemDurability
+	elseif GetContainerItemDurability then
+		get_dur = GetContainerItemDurability
+	end
+
 	if (bag) then
 		_, repairCost = TitanRepairTooltip:SetBagItem(bag, index)
-		curDurability, maxDurability = GetContainerItemDurability(bag, index)
+--		curDurability, maxDurability = C_Container.GetContainerItemDurability(bag, index)
+		curDurability, maxDurability = get_dur(bag, index)
 	else
 		local slotName = TPR.ITEM_STATUS[index].slot.."Slot"
 		--tit_debug_bis("_GetStatus index="..index..", slotName="..(slotName or "NIL"))
@@ -1525,7 +1537,9 @@ function TitanRepair_GetRepairInvCost()
 	TitanRepairTooltip:SetOwner(UIParent, "ANCHOR_NONE");

 	for bag = 0, 4 do
-		for slot = 1, GetContainerNumSlots(bag) do
+
+--		for slot = 1, GetContainerNumSlots(bag) do
+		for slot = 1, ContainerFrame_GetContainerNumSlotsWithBase(bag) do
 			local _, repairCost = TitanRepairTooltip:SetBagItem(bag, slot);
 			if (repairCost and (repairCost > 0)) then
 				result = result + repairCost;
diff --git a/TitanRepair/TitanRepair.toc b/TitanRepair/TitanRepair.toc
index 56ef3bb..17a9598 100644
--- a/TitanRepair/TitanRepair.toc
+++ b/TitanRepair/TitanRepair.toc
@@ -1,10 +1,10 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55fRepair|r] |cff00aa005.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55fRepair|r] |cff00aa006.00.02.100002|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: Titan
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## X-Child-Of: Titan
 TitanRepair.xml
diff --git a/TitanVolume/TitanVolume.lua b/TitanVolume/TitanVolume.lua
index 8434058..70e1f03 100644
--- a/TitanVolume/TitanVolume.lua
+++ b/TitanVolume/TitanVolume.lua
@@ -404,7 +404,7 @@ function TitanPanelVolumeButton_GetTooltipText()
 --	local volumeSpeakerText = TitanPanelVolume_GetVolumeText(GetCVar("InboundChatVolume"));
 	return ""..
 		MASTER_VOLUME.."\t"..TitanUtils_GetHighlightText(volumeMasterText).."\n"..
-		SOUND_VOLUME.."\t"..TitanUtils_GetHighlightText(volumeSoundText).."\n"..
+		SOUND.." "..VOLUME.."\t"..TitanUtils_GetHighlightText(volumeSoundText).."\n"..
 		MUSIC_VOLUME.."\t"..TitanUtils_GetHighlightText(volumeMusicText).."\n"..
 		AMBIENCE_VOLUME.."\t"..TitanUtils_GetHighlightText(volumeAmbienceText).."\n"..
 		DIALOG_VOLUME.."\t"..TitanUtils_GetHighlightText(volumeDialogText).."\n"..
diff --git a/TitanVolume/TitanVolume.toc b/TitanVolume/TitanVolume.toc
index 2b500a9..51e96f0 100644
--- a/TitanVolume/TitanVolume.toc
+++ b/TitanVolume/TitanVolume.toc
@@ -1,10 +1,10 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55fVolume|r] |cff00aa005.23.7.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55fVolume|r] |cff00aa006.00.02.23.7.100002|r
 ## Notes: Adds a volume control icon on your Titan Bar
 ## Author: Titan Panel Development Team (http://www.titanpanel.org)
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: Titan
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## X-Child-Of: Titan
 TitanVolume.xml
diff --git a/TitanXP/TitanXP.toc b/TitanXP/TitanXP.toc
index 2d3fe99..b3909e0 100644
--- a/TitanXP/TitanXP.toc
+++ b/TitanXP/TitanXP.toc
@@ -1,10 +1,10 @@
-## Interface: 90207
-## Title: Titan Panel [|cffeda55fXP|r] |cff00aa005.23.7.90207|r
+## Interface: 100002
+## Title: Titan Panel [|cffeda55fXP|r] |cff00aa006.00.02.100002|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: Titan
-## Version: 5.23.7.90207
+## Version: 6.00.02.100002
 ## X-Child-Of: Titan
 TitanXP.xml