I'm wondering, if it's possible to somehow utilize the ESC key to cancel dialogs, opened by Ace3.
If I hook the OnKeyUp (or similar) event, check for "escape" pressed and "fire" the "OnClose" - it works fine, except one thing: all the keyboard events don't pass through this dialog anymore. As a result - you can't chat or move your character while one of such dialogs are open.
On other hand, if I don't hook key events - the dialog will not be closed on escape press.
Should I derive my dialog's frame from something other than "Frame" ? Should I use some other Ace API to create it? For now, it looks like this:
stylePopup = AceGUI:Create("Frame")
... (init UI elements here)
stylePopup:DoLayout()
stylePopup:Show()
ps. When I close dialog - I release the frame, should I also find it's name in UISpecialFrames and remove it from there as well?
pps. doh ... I just realized, that AceGUI:Create("Frame") does not have the parameter to define frame's name... Does it mean, that I should define my own widget to have named frame in it? I guess so...
local old_CloseSpecialWindows
if not old_CloseSpecialWindows then
old_CloseSpecialWindows = CloseSpecialWindows
CloseSpecialWindows = function()
local found = old_CloseSpecialWindows()
if frame then
frame:Hide()
return true
end
return found
end
end
as the AceGUI's Frame has a :Hide() method, you can use that here or what ever you need.
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
I'm wondering, if it's possible to somehow utilize the ESC key to cancel dialogs, opened by Ace3.
If I hook the OnKeyUp (or similar) event, check for "escape" pressed and "fire" the "OnClose" - it works fine, except one thing: all the keyboard events don't pass through this dialog anymore. As a result - you can't chat or move your character while one of such dialogs are open.
On other hand, if I don't hook key events - the dialog will not be closed on escape press.
Should I derive my dialog's frame from something other than "Frame" ? Should I use some other Ace API to create it? For now, it looks like this:
Thank you.
That's all.
ps. When I close dialog - I release the frame, should I also find it's name in UISpecialFrames and remove it from there as well?
pps. doh ... I just realized, that AceGUI:Create("Frame") does not have the parameter to define frame's name... Does it mean, that I should define my own widget to have named frame in it? I guess so...
as the AceGUI's Frame has a :Hide() method, you can use that here or what ever you need.