SecureHandlerClickTemplate

SecureHandlerClickTemplate is one of the SecureHandler templates introduced in Patch 3.0. Those templates exist in order to allow addon code to execute within a restricted environment, where it may perform protected actions but has access only to a limited subset of the API. SecureHandlerClickTemplate executes snippets in response to OnClick widget handler invocations.

Snippets
The handler executes the following snippets in a restricted environment:
 * _onclick (self, button, down) : The snippet is executed when button is clicked.
 * self : Secure frame handle to the frame being clicked.
 * button : String - mouse button being clicked ("LeftButton", ...)
 * down : Boolean (1/nil) - If true-equivalent, the click is fired by a down-stroke, i.e. the button being pushed down. If false-equivalent, the click is fired by an up-stroke, i.e. the button being released.

Example
Suppose we wanted to make a button that would show/hide multiple protected frames, even while in combat. local frame = CreateFrame("BUTTON", "MyClickButton", UIParent, "SecureHandlerClickTemplate"); frame:SetAttribute("_onclick", [=[ local show, i, ref = button == "LeftButton", 2, self:GetFrameRef("frame1");  while ref do   if show then ref:Show; else ref:Hide; end   i, ref = i + 1, self:GetFrameRef("frame" .. i); end ]=]); frame:RegisterForClicks("AnyUp"); frame:SetFrameRef("frame1", PlayerFrame); frame:SetFrameRef("frame2", TargetFrame); -- ... The _onclick snippet would get executed, check whether the click was a left-click, and, based on that, iterate through all "frameX" frame references on the button and show/hide them.