internal bool InternalDispatchEvent(string strType, EventBridge bridge, object data, object initiator)
{
if (bridge == null)
bridge = TryGetEventBridge(strType);
EventBridge gBridge = null;
if ((this is DisplayObject) && ((DisplayObject)this).gOwner != null)
gBridge = ((DisplayObject)this).gOwner.TryGetEventBridge(strType);
bool b1 = bridge != null && !bridge.isEmpty;
bool b2 = gBridge != null && !gBridge.isEmpty;
if (b1 || b2)
{
EventContext context = EventContext.Get();
context.initiator = initiator != null ? initiator : this;
context.type = strType;
context.data = data;
if (data is InputEvent)
sCurrentInputEvent = (InputEvent)data;
context.inputEvent = sCurrentInputEvent;
if (b1)
{
bridge.CallCaptureInternal(context);
bridge.CallInternal(context);
}
if (b2)
{
gBridge.CallCaptureInternal(context);
gBridge.CallInternal(context);
}
EventContext.Return(context);
context.initiator = null;
context.sender = null;
context.data = null;
return context._defaultPrevented;
}
else
return false;
}