comparison LibFarmbuyer.lua @ 69:8442272a8418

- Make sure popup dialogs are on top of Ace3's widgets. - Minor code reorganization. Safety hook for future boss-entry code. - Avoid same bug from a couple revs ago when adding manual boss kills. - Ask players about snapshot data when manually entering boss kills. - Blizzard rearranged the button order in 3-entry popups some time ago and I failed to adapt the code until now.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Fri, 11 May 2012 03:08:12 +0000
parents 81d5449621f8
children 32eb24fb2ebf
comparison
equal deleted inserted replaced
68:3bed6d51e077 69:8442272a8418
52 52
53 - new(...), del(t), copy(t), clear() 53 - new(...), del(t), copy(t), clear()
54 Ditto for table recycling. 54 Ditto for table recycling.
55 ]] 55 ]]
56 56
57 local MAJOR, MINOR = "LibFarmbuyer", 16 57 local MAJOR, MINOR = "LibFarmbuyer", 17
58 assert(LibStub,MAJOR.." requires LibStub") 58 assert(LibStub,MAJOR.." requires LibStub")
59 local lib = LibStub:NewLibrary(MAJOR, MINOR) 59 local lib = LibStub:NewLibrary(MAJOR, MINOR)
60 if not lib then return end 60 if not lib then return end
61 61
62 _G[MAJOR] = lib 62 _G[MAJOR] = lib
165 if editbox:GetText() == "" then return end 165 if editbox:GetText() == "" then return end
166 local dialog = editbox:GetParent() 166 local dialog = editbox:GetParent()
167 StaticPopupDialogs[dialog.which].OnAccept (dialog, dialog.data, dialog.data2) 167 StaticPopupDialogs[dialog.which].OnAccept (dialog, dialog.data, dialog.data2)
168 dialog:Hide() 168 dialog:Hide()
169 end 169 end
170 local function OnShow_witheditbox (dialog, data) 170 local function OnShow_ontop (dialog, data)
171 local info = StaticPopupDialogs[dialog.which] 171 local info = StaticPopupDialogs[dialog.which]
172 --dialog[info.hasWideEditBox and "wideEditBox" or "editBox"]:SetFocus() 172 -- ace3's elements are hardcoded to this strata, make sure popups
173 dialog.editBox:SetFocus() 173 -- can also be seen (their toplevel=true attribute handles the
174 -- framelevels within the same strata)
175 info.saved_strata = dialog:GetFrameStrata()
176 dialog:SetFrameStrata("FULLSCREEN_DIALOG")
177 if info.hasEditBox then
178 dialog.editBox:SetFocus()
179 end
174 if info.farm_OnShow then 180 if info.farm_OnShow then
175 return info.farm_OnShow (dialog, data) 181 return info.farm_OnShow (dialog, data)
176 end 182 end
177 end 183 end
178 local function OnAccept_witheditbox (dialog, data, data2) 184 local function OnAccept_witheditbox (dialog, data, data2)
181 dialog.usertext = dialog.editBox:GetText():trim() 187 dialog.usertext = dialog.editBox:GetText():trim()
182 if info.farm_OnAccept then 188 if info.farm_OnAccept then
183 return info.farm_OnAccept (dialog, data, data2) 189 return info.farm_OnAccept (dialog, data, data2)
184 end 190 end
185 end 191 end
186 local function OnHide_cleanup (dialog) 192 local function OnHide_cleanup (dialog, data)
193 local info = StaticPopupDialogs[dialog.which]
194 if info.farm_OnHide then
195 return info.farm_OnHide (dialog, data)
196 end
187 dialog.data = nil 197 dialog.data = nil
188 dialog.data2 = nil 198 dialog.data2 = nil
199 dialog:SetFrameStrata(info.saved_strata or "DIALOG")
189 end 200 end
190 201
191 --[[ 202 --[[
192 StaticPopup 203 StaticPopup
193 ]] 204 ]]
194 function lib.StaticPopup (t) 205 function lib.StaticPopup (t)
195 if t.hasEditBox then 206 if t.hasEditBox then
196 t.EditBoxOnTextChanged = EditBoxOnTextChanged_notempty 207 t.EditBoxOnTextChanged = EditBoxOnTextChanged_notempty
197 t.EditBoxOnEnterPressed = EditBoxOnEnterPressed_accept 208 t.EditBoxOnEnterPressed = EditBoxOnEnterPressed_accept
198 if t.OnShow then
199 t.farm_OnShow = t.OnShow
200 end
201 t.OnShow = OnShow_witheditbox
202 if t.OnAccept then 209 if t.OnAccept then
203 t.farm_OnAccept = t.OnAccept 210 t.farm_OnAccept = t.OnAccept
204 end 211 end
205 t.OnAccept = OnAccept_witheditbox 212 t.OnAccept = OnAccept_witheditbox
206 -- this calls OnCancel with "clicked", unless noCancelOnEscape is set 213 -- this calls OnCancel with "clicked", unless noCancelOnEscape is set
207 t.EditBoxOnEscapePressed = StaticPopup_EscapePressed 214 t.EditBoxOnEscapePressed = StaticPopup_EscapePressed
208 end 215 end
209 216
210 if not t.OnHide then 217 t.farm_OnShow = t.OnShow
211 t.OnHide = OnHide_cleanup 218 t.OnShow = OnShow_ontop
212 end 219 t.farm_OnHide = t.OnHide
220 t.OnHide = OnHide_cleanup
213 221
214 t.timeout = 0 222 t.timeout = 0
215 t.whileDead = true 223 t.whileDead = true
216 t.hideOnEscape = true 224 t.hideOnEscape = true
217 t.enterClicksFirstButton = true 225 t.enterClicksFirstButton = true