Resolve some shootyepgp staticpopup issues caused by LazyPig.

Fix a bug with tablets becoming unresponsive when using a combination of clicks and ESC to toggle with multiple tablets open.
More improvements to initial loading logic, to avoid issues with cold login in an existing raid (eg. after crash)
Improve detection of admin status for command-line options as well ensure tablets modified by chat commands update in real time (eg. clear loot, logs)
This commit is contained in:
Road-block
2018-05-21 15:49:19 +03:00
parent 27e8e53eac
commit 0e42d616aa
8 changed files with 101 additions and 92 deletions
+12 -11
View File
@@ -45,14 +45,13 @@ function sepgp_alts:setHideScript()
while (tablet) and i<100 do
if tablet.owner ~= nil and tablet.owner == "sepgp_alts" then
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
if not (tablet:GetScript("OnHide")) then
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_alts") then
T:Attach("sepgp_alts")
this:SetScript("OnHide",nil)
end
end)
end
tablet:SetScript("OnHide",nil)
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_alts") then
T:Attach("sepgp_alts")
this:SetScript("OnHide",nil)
end
end)
break
end
i = i+1
@@ -74,10 +73,12 @@ function sepgp_alts:Toggle(forceShow)
T:ToggleLocked("sepgp_alts")
end
self:setHideScript()
elseif (forceShow) then
sepgp_alts:Refresh()
else
T:Attach("sepgp_alts") -- hide
if (forceShow) then
sepgp_alts:Refresh()
else
T:Attach("sepgp_alts") -- hide
end
end
end
+12 -11
View File
@@ -45,14 +45,13 @@ function sepgp_bids:setHideScript()
while (tablet) and i<100 do
if tablet.owner ~= nil and tablet.owner == "sepgp_bids" then
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
if not (tablet:GetScript("OnHide")) then
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_bids") then
T:Attach("sepgp_bids")
this:SetScript("OnHide",nil)
end
end)
end
tablet:SetScript("OnHide",nil)
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_bids") then
T:Attach("sepgp_bids")
this:SetScript("OnHide",nil)
end
end)
break
end
i = i+1
@@ -74,10 +73,12 @@ function sepgp_bids:Toggle(forceShow)
T:ToggleLocked("sepgp_bids")
end
self:setHideScript()
elseif (forceShow) then
sepgp_bids:Refresh()
else
T:Attach("sepgp_bids") -- hide
if (forceShow) then
sepgp_bids:Refresh()
else
T:Attach("sepgp_bids") -- hide
end
end
end
+12 -11
View File
@@ -50,14 +50,13 @@ function sepgp_logs:setHideScript()
while (tablet) and i<100 do
if tablet.owner ~= nil and tablet.owner == "sepgp_logs" then
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
if not (tablet:GetScript("OnHide")) then
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_logs") then
T:Attach("sepgp_logs")
this:SetScript("OnHide",nil)
end
end)
end
tablet:SetScript("OnHide",nil)
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_logs") then
T:Attach("sepgp_logs")
this:SetScript("OnHide",nil)
end
end)
break
end
i = i+1
@@ -79,10 +78,12 @@ function sepgp_logs:Toggle(forceShow)
T:ToggleLocked("sepgp_logs")
end
self:setHideScript()
elseif (forceShow) then
sepgp_logs:Refresh()
else
T:Attach("sepgp_logs") -- hide
if (forceShow) then
sepgp_logs:Refresh()
else
T:Attach("sepgp_logs") -- hide
end
end
end
+12 -11
View File
@@ -50,14 +50,13 @@ function sepgp_loot:setHideScript()
while (tablet) and i<100 do
if tablet.owner ~= nil and tablet.owner == "sepgp_loot" then
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
if not (tablet:GetScript("OnHide")) then
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_loot") then
T:Attach("sepgp_loot")
this:SetScript("OnHide",nil)
end
end)
end
tablet:SetScript("OnHide",nil)
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_loot") then
T:Attach("sepgp_loot")
this:SetScript("OnHide",nil)
end
end)
break
end
i = i+1
@@ -79,10 +78,12 @@ function sepgp_loot:Toggle(forceShow)
T:ToggleLocked("sepgp_loot")
end
self:setHideScript()
elseif (forceShow) then
sepgp_loot:Refresh()
else
T:Attach("sepgp_loot") -- hide
if (forceShow) then
sepgp_loot:Refresh()
else
T:Attach("sepgp_loot") -- hide
end
end
end
+12 -11
View File
@@ -45,14 +45,13 @@ function sepgp_reserves:setHideScript()
while (tablet) and i<100 do
if tablet.owner ~= nil and tablet.owner == "sepgp_reserves" then
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
if not (tablet:GetScript("OnHide")) then
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_reserves") then
T:Attach("sepgp_reserves")
this:SetScript("OnHide",nil)
end
end)
end
tablet:SetScript("OnHide",nil)
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_reserves") then
T:Attach("sepgp_reserves")
this:SetScript("OnHide",nil)
end
end)
break
end
i = i+1
@@ -74,10 +73,12 @@ function sepgp_reserves:Toggle(forceShow)
T:ToggleLocked("sepgp_reserves")
end
self:setHideScript()
elseif (forceShow) then
sepgp_reserves:Refresh()
else
T:Attach("sepgp_reserves") -- hide
if (forceShow) then
sepgp_reserves:Refresh()
else
T:Attach("sepgp_reserves") -- hide
end
end
end
+27 -24
View File
@@ -80,6 +80,7 @@ local admincmd, membercmd = {type = "group", handler = sepgp, args = {
desc = L["Clear Loot Table."],
func = function()
sepgp_looted = {}
sepgp_loot:Refresh()
sepgp:defaultPrint(L["Loot info cleared"])
end,
order = 3,
@@ -90,6 +91,7 @@ local admincmd, membercmd = {type = "group", handler = sepgp, args = {
desc = L["Clear Logs Table."],
func = function()
sepgp_log = {}
sepgp_logs:Refresh()
sepgp:defaultPrint(L["Logs cleared"])
end,
order = 4,
@@ -494,7 +496,6 @@ function sepgp:OnEnable() -- PLAYER_LOGIN (2)
else
self:RegisterEvent("AceEvent_FullyInitialized")
end
self:RegisterChatCommand({"/shooty","/sepgp","/shootyepgp"},self.cmdtable())
end
function sepgp:OnDisable()
@@ -505,7 +506,6 @@ end
function sepgp:AceEvent_FullyInitialized() -- SYNTHETIC EVENT, later than PLAYER_LOGIN, PLAYER_ENTERING_WORLD (3)
--table.insert(sepgp_debug,{[date("%b/%d %H:%M:%S")]="AceEvent_FullyInitialized"})
if self._hasInitFull then return end
self._options = self:buildMenu()
for i=1,NUM_CHAT_WINDOWS do
local tab = getglobal("ChatFrame"..i.."Tab")
@@ -517,9 +517,7 @@ function sepgp:AceEvent_FullyInitialized() -- SYNTHETIC EVENT, later than PLAYER
shooty_debugchat:SetMaxLines(1024)
break
end
end
self:RegisterEvent("CHAT_MSG_ADDON","addonComms")
end
if (sepgp_main == nil) or (sepgp_main == "") then
if (IsInGuild()) then
@@ -658,6 +656,10 @@ function sepgp:delayedInit()
if IsGuildLeader() and ( (sepgp_dbver == nil) or (major_ver > sepgp_dbver) ) then
sepgp[string.format("v%dtov%d",(sepgp_dbver or 2),major_ver)](sepgp)
end
-- init options and comms
self._options = self:buildMenu()
self:RegisterChatCommand({"/shooty","/sepgp","/shootyepgp"},self.cmdtable())
self:RegisterEvent("CHAT_MSG_ADDON","addonComms")
-- broadcast our version
local addonMsg = string.format("VERSION;%s;%d",sepgp._versionString,major_ver)
self:addonMessage(addonMsg,"GUILD")
@@ -1485,7 +1487,9 @@ function sepgp:buildRosterTable()
if (sepgp_raidonly) and GetNumRaidMembers() > 0 then
for i = 1, GetNumRaidMembers(true) do
local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(i)
r[name] = true
if (name) then
r[name] = true
end
end
end
sepgp.alts = {}
@@ -2049,8 +2053,9 @@ function sepgp:processLoot(player,itemLink,source)
return
end
local class,_
if player == YOU or player == self._playerName then
class = UnitClass("player") -- localized
if player == YOU then player = self._playerName end
if player == self._playerName then
class = UnitClass("player") -- localized
else
_, class = self:verifyGuildMember(player,true) -- localized
end
@@ -2101,8 +2106,8 @@ end
function sepgp:make_escable(framename,operation)
local found
for i in UISpecialFrames do
if UISpecialFrames[i]==framename then
for i,f in ipairs(UISpecialFrames) do
if f==framename then
found = i
end
end
@@ -2352,7 +2357,7 @@ StaticPopupDialogs["SHOOTY_EPGP_AUTO_GEARPOINTS"] = {
button1 = L["GP Actions"],
button2 = L["Remind me Later"],
OnAccept = function()
sepgp:EasyMenu(sepgp_auto_gp_menu, sepgp._menuFrame, this, 0, 0, "MENU")
sepgp:EasyMenu(sepgp_auto_gp_menu, sepgp._menuFrame, this, 0, 0, "MENU", 1)
return true
end,
OnCancel = function(data,reason)
@@ -2377,22 +2382,20 @@ StaticPopupDialogs["SHOOTY_EPGP_AUTO_GEARPOINTS"] = {
whileDead = 1,
hideOnEscape = 1
}
function sepgp:EasyMenu(menuList, menuFrame, anchor, x, y, displayMode)
function sepgp:EasyMenu_Initialize(level, menuList)
for i, info in ipairs(menuList) do
if (info.text) then
info.index = i
UIDropDownMenu_AddButton( info, level )
end
end
end
function sepgp:EasyMenu(menuList, menuFrame, anchor, x, y, displayMode, level)
if ( displayMode == "MENU" ) then
menuFrame.displayMode = displayMode
end
UIDropDownMenu_Initialize(menuFrame, function() sepgp:EasyMenu_Initialize(level, menuList) end, displayMode, nil, menuList)
ToggleDropDownMenu(1, nil, menuFrame, anchor, x, y, menuList)
end
function sepgp:EasyMenu_Initialize(level, menuList)
for index = 1, table.getn( menuList ) do
local value = menuList[index]
if (value.text) then
value.index = index;
UIDropDownMenu_AddButton( value, level );
end
end
UIDropDownMenu_Initialize(menuFrame, function() sepgp:EasyMenu_Initialize(level, menuList) end, displayMode, level)
ToggleDropDownMenu(1, nil, menuFrame, anchor, x, y)
end
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_groupbyarmor,sepgp_groupbyrole,sepgp_raidonly,sepgp_decay,sepgp_minep,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_altspool,sepgp_altpercent,sepgp_log,sepgp_dbver,sepgp_looted,sepgp_debug
+1 -1
View File
@@ -8,7 +8,7 @@
## X-Category: Guild
## X-Credits: shooty, Qcat(zhCN)
## Version: 3.50
## X-Alpha:
## X-Alpha: 3.50.1
## OptionalDeps: Ace2
## SavedVariables: sepgp_saychannel, sepgp_groupbyclass, sepgp_groupbyarmor, sepgp_groupbyrole, sepgp_raidonly, sepgp_dbver, sepgp_debug
## SavedVariablesPerCharacter: sepgp_main, sepgp_log, sepgp_looted, sepgp_decay, sepgp_minep, sepgp_reservechannel, sepgp_progress, sepgp_discount, sepgp_altspool, sepgp_altpercent
+13 -12
View File
@@ -288,14 +288,13 @@ function sepgp_standings:setHideScript()
while (tablet) and i<100 do
if tablet.owner ~= nil and tablet.owner == "sepgp_standings" then
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
if not (tablet:GetScript("OnHide")) then
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_standings") then
T:Attach("sepgp_standings")
this:SetScript("OnHide",nil)
end
end)
end
tablet:SetScript("OnHide",nil)
tablet:SetScript("OnHide",function()
if not T:IsAttached("sepgp_standings") then
T:Attach("sepgp_standings")
this:SetScript("OnHide",nil)
end
end)
break
end
i = i+1
@@ -311,16 +310,18 @@ end
function sepgp_standings:Toggle(forceShow)
self:Top()
if T:IsAttached("sepgp_standings") then
if T:IsAttached("sepgp_standings") then -- hidden
T:Detach("sepgp_standings") -- show
if (T:IsLocked("sepgp_standings")) then
T:ToggleLocked("sepgp_standings")
end
self:setHideScript()
elseif (forceShow) then
sepgp_standings:Refresh()
else
T:Attach("sepgp_standings") -- hide
if (forceShow) then
sepgp_standings:Refresh()
else
T:Attach("sepgp_standings") -- hide
end
end
end