WoW:UIHANDLER OnClick: Difference between revisions
Jump to navigation
Jump to search
(→Example: +XML handlers) |
m (Move page script moved page UIHANDLER OnClick to WoW:UIHANDLER OnClick without leaving a redirect) |
||
| (One intermediate revision by one other user not shown) | |||
| Line 9: | Line 9: | ||
==Example== | ==Example== | ||
local taunts = {"I'm a button.", "Quit clicking me.", "That's enough.", "Stop it!", "I'm leaving!"}; | local taunts = {"I'm a button.", "Quit clicking me.", "That's enough.", "Stop it!", "I'm leaving!"}; | ||
local widget = CreateFrame("Button", "TauntingButton", UIParent, " | local widget = CreateFrame("Button", "TauntingButton", UIParent, "UIPanelButtonTemplate"); | ||
widget:SetWidth(200); widget:SetHeight(24); widget:SetPoint("CENTER"); | widget:SetWidth(200); widget:SetHeight(24); widget:SetPoint("CENTER"); | ||
widget:RegisterForClicks("AnyUp"); | widget:RegisterForClicks("AnyUp"); | ||
widget: | widget:SetScript("OnClick", function (self, button, down) | ||
self:SetID((self:GetID() or 1) + 1); | self:SetID((self:GetID() or 1) + 1); | ||
if taunts[self:GetID()] then | if taunts[self:GetID()] then | ||
Latest revision as of 04:49, 15 August 2023
The OnClick handler is called when a UI widget that supports clicking (i.e. is derived from a Button) is clicked. Region derivatives like Frame only implement OnMouseDown / OnMouseUp handlers.
Arguments
- self
- widget being clicked
- button
- [mouse] button used to click the widget. Due to widget:Click(button, down), button argument may be anything, although the following five values are common for normal mouse clicks: "LeftButton", "RightButton", "MiddleButton", "Button4", "Button5".
- down
- Boolean - 1 (true) if the trigger button is currently being held down, nil (false) otherwise.
Example
local taunts = {"I'm a button.", "Quit clicking me.", "That's enough.", "Stop it!", "I'm leaving!"};
local widget = CreateFrame("Button", "TauntingButton", UIParent, "UIPanelButtonTemplate");
widget:SetWidth(200); widget:SetHeight(24); widget:SetPoint("CENTER");
widget:RegisterForClicks("AnyUp");
widget:SetScript("OnClick", function (self, button, down)
self:SetID((self:GetID() or 1) + 1);
if taunts[self:GetID()] then
self:SetText(taunts[self:GetID()]);
else
self:Hide();
end
end);
The named arguments are also available in XML handlers:
<Button name="foo" ...>
...
<Scripts>
...
<OnClick>self:SetText("You clicked with " .. button);</OnClick>
</Scripts>
</Button>