Widget API: Button:RegisterForClicks

From AddOn Studio
Jump to navigation Jump to search

Widget API ← Button < RegisterForClicks

Control which mouse button up/down events get passed to the <OnClick> event handler. See also XML registerForClicks.

  button:RegisterForClicks("clicktype1" [, "clicktype2" [, ...]])

Arguments[edit]

Any number of the following strings:

"LeftButtonUp"
"RightButtonUp"
"MiddleButtonUp"
"Button4Up"
"Button5Up"
"LeftButtonDown"
"RightButtonDown"
"MiddleButtonDown"
"Button4Down"
"Button5Down"
"AnyUp"
"AnyDown"

Example[edit]

 <Button>
   <Scripts>
     <OnLoad>
       self:RegisterForClicks("LeftButtonUp", "RightButtonDown");
     </OnLoad>
     <OnClick>
       print("OnClick: "..arg1);
     </OnClick>
     <OnMouseUp>
       print("OnMouseUp: "..arg1);
     </OnMouseUp>
     <OnMouseDown>
       print("OnMouseDown: "..arg1);
     </OnMouseDown>
       

Results[edit]

Clicking the Left, Right and Middle buttons in turn will produce:

 OnMouseDown: LeftButton

 OnMouseUp: LeftButton
 OnClick: LeftButton

 OnMouseDown: RightButton
 OnClick: RightButton

 OnMouseUp: RightButton

 OnMouseDown: MiddleButton

 OnMouseUp: MiddleButton

Details[edit]

  • Buttons default to having "LeftButtonUp" registered for clicks.
  • Registering for () means <OnClick> will never trigger.
  • Registering for invalid event names will not cause errors; invalid names are silently ignored.
  • The <OnMouseDown> and <OnMouseUp> handlers will always receieve all mouse up/down events.
  • ONLY BUTTONS (and widgets that inherit from Button) HAVE OnClick HANDLERS! If you want to trap mouse button events for other objects, use the OnMouseDown and OnMouseUp events.