Fix Wrapped_OnLeave in SecureHandlers.lua - WoWInterface
Thread Tools Display Modes
10-15-13, 06:15 PM   #1
An Onyxian Warder
Vrul's Avatar
AddOn Author - Click to view addons
Join Date: Nov 2007
Posts: 397
Fix Wrapped_OnLeave in SecureHandlers.lua

Wrapped_OnLeave will only work for the most recent wrap due to:
	if ( motion and self:GetAttribute("_wrapentered")) then
		self:SetAttribute("_wrapentered", nil);
That prevents any further wraps from running. A simple fix is:
local function Wrapped_OnLeave(self, header, preBody, postBody, wrap,
                               motion, ...)
    local allow, message;
    if ( motion and self:GetAttribute("_wrapentered")) then
        if ( IsWrapEligible(self) ) then
            allow, message =
                SecureHandler_Other_Execute(header, self, "self",
            if (allow == false) then
                self:SetAttribute("_wrapentered", nil);

    securecall(SafeCallWrappedHandler, self, wrap, motion, ...);
    self:SetAttribute("_wrapentered", nil);

    if (postBody and message ~= nil) then
        SecureHandler_Other_Execute(header, self, "self,message",
                                    postBody, message);
However, I'm not even sure why the _wrapentered check is even needed. The motion argument already ensures that it was a hardware event. I thought it might be to ensure an OnLeave for every OnEnter, but OnEnter can trigger multiple time without a corresponding OnLeave so that can't be it.

If anything I think the _wrapentered should be scrapped and maybe a check added if motion isn't set to see if the frame that caused the focus loss was secure and still allow the script to run.
  Reply With Quote

WoWInterface » Developer Discussions » Wish List » Fix Wrapped_OnLeave in SecureHandlers.lua

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off