public static void UnregisterListeners <TEventType>(CallbackEventHandler ceh, Delegate callback) { bool flag = !GlobalCallbackRegistry.IsEventDebuggerConnected; if (!flag) { Dictionary <Type, List <GlobalCallbackRegistry.ListenerRecord> > dictionary; bool flag2 = !GlobalCallbackRegistry.s_Listeners.TryGetValue(ceh, out dictionary); if (!flag2) { Type expr_3A = callback.Method.DeclaringType; string str = ((expr_3A != null) ? expr_3A.Name : null) ?? string.Empty; string b = str + "." + callback.Method.Name; List <GlobalCallbackRegistry.ListenerRecord> list; bool flag3 = !dictionary.TryGetValue(typeof(TEventType), out list); if (!flag3) { for (int i = list.Count - 1; i >= 0; i--) { GlobalCallbackRegistry.ListenerRecord listenerRecord = list[i]; bool flag4 = listenerRecord.name == b; if (flag4) { list.RemoveAt(i); } } } } } }
public static void UnregisterListeners <TEventType>(CallbackEventHandler ceh, Delegate callback) { if (!IsEventDebuggerConnected) { return; } Dictionary <Type, List <ListenerRecord> > dict; if (!s_Listeners.TryGetValue(ceh, out dict)) { return; } var declType = callback.Method.DeclaringType?.Name ?? string.Empty; var itemName = declType + "." + callback.Method.Name; List <ListenerRecord> callbackRecords; if (!dict.TryGetValue(typeof(TEventType), out callbackRecords)) { return; } for (var i = callbackRecords.Count - 1; i >= 0; i--) { var callbackRecord = callbackRecords[i]; if (callbackRecord.name == itemName) { callbackRecords.RemoveAt(i); } } }
public static void RegisterListeners <TEventType>(CallbackEventHandler ceh, Delegate callback, TrickleDown useTrickleDown) { #if UNITY_EDITOR if (!IsEventDebuggerConnected) { return; } Dictionary <Type, List <ListenerRecord> > dict; if (!s_Listeners.TryGetValue(ceh, out dict)) { dict = new Dictionary <Type, List <ListenerRecord> >(); s_Listeners.Add(ceh, dict); } var declType = callback.Method.DeclaringType?.Name ?? string.Empty; string objectName = (callback.Target as VisualElement).GetDisplayName(); string itemName = declType + "." + callback.Method.Name + " > " + useTrickleDown + " [" + objectName + "]"; List <ListenerRecord> callbackRecords; if (!dict.TryGetValue(typeof(TEventType), out callbackRecords)) { callbackRecords = new List <ListenerRecord>(); dict.Add(typeof(TEventType), callbackRecords); } StackFrame callStack = new StackFrame(2, true); callbackRecords.Add(new ListenerRecord { hashCode = callback.GetHashCode(), name = itemName, fileName = callStack.GetFileName(), lineNumber = callStack.GetFileLineNumber() }); #endif }
public static bool RegisterValueChangedCallback <T>(this INotifyValueChanged <T> control, EventCallback <ChangeEvent <T> > callback) { CallbackEventHandler callbackEventHandler = control as CallbackEventHandler; bool flag = callbackEventHandler != null; bool result; if (flag) { callbackEventHandler.RegisterCallback <ChangeEvent <T> >(callback, TrickleDown.NoTrickleDown); result = true; } else { result = false; } return(result); }
public static void RegisterListeners <TEventType>(CallbackEventHandler ceh, Delegate callback, TrickleDown useTrickleDown) { bool flag = !GlobalCallbackRegistry.IsEventDebuggerConnected; if (!flag) { Dictionary <Type, List <GlobalCallbackRegistry.ListenerRecord> > dictionary; bool flag2 = !GlobalCallbackRegistry.s_Listeners.TryGetValue(ceh, out dictionary); if (flag2) { dictionary = new Dictionary <Type, List <GlobalCallbackRegistry.ListenerRecord> >(); GlobalCallbackRegistry.s_Listeners.Add(ceh, dictionary); } Type expr_4A = callback.Method.DeclaringType; string text = ((expr_4A != null) ? expr_4A.Name : null) ?? string.Empty; string displayName = (callback.Target as VisualElement).GetDisplayName(true); string name = string.Concat(new string[] { text, ".", callback.Method.Name, " > ", useTrickleDown.ToString(), " [", displayName, "]" }); List <GlobalCallbackRegistry.ListenerRecord> list; bool flag3 = !dictionary.TryGetValue(typeof(TEventType), out list); if (flag3) { list = new List <GlobalCallbackRegistry.ListenerRecord>(); dictionary.Add(typeof(TEventType), list); } StackFrame stackFrame = new StackFrame(2, true); list.Add(new GlobalCallbackRegistry.ListenerRecord { hashCode = callback.GetHashCode(), name = name, fileName = stackFrame.GetFileName(), lineNumber = stackFrame.GetFileLineNumber() }); } }
public static void PropagateEvent(EventBase evt) { Debug.Assert(!evt.dispatch, "Event is being dispatched recursively."); evt.dispatch = true; bool flag = evt.path == null; if (flag) { CallbackEventHandler expr_36 = evt.target as CallbackEventHandler; if (expr_36 != null) { expr_36.HandleEventAtTargetPhase(evt); } } else { bool tricklesDown = evt.tricklesDown; if (tricklesDown) { evt.propagationPhase = PropagationPhase.TrickleDown; for (int i = evt.path.trickleDownPath.Count - 1; i >= 0; i--) { bool isPropagationStopped = evt.isPropagationStopped; if (isPropagationStopped) { break; } bool flag2 = evt.Skip(evt.path.trickleDownPath[i]); if (!flag2) { evt.currentTarget = evt.path.trickleDownPath[i]; evt.currentTarget.HandleEvent(evt); } } } evt.propagationPhase = PropagationPhase.AtTarget; foreach (VisualElement current in evt.path.targetElements) { bool flag3 = evt.Skip(current); if (!flag3) { evt.target = current; evt.currentTarget = evt.target; evt.currentTarget.HandleEvent(evt); } } evt.propagationPhase = PropagationPhase.DefaultActionAtTarget; foreach (VisualElement current2 in evt.path.targetElements) { bool flag4 = evt.Skip(current2); if (!flag4) { evt.target = current2; evt.currentTarget = evt.target; evt.currentTarget.HandleEvent(evt); } } evt.target = evt.leafTarget; bool bubbles = evt.bubbles; if (bubbles) { evt.propagationPhase = PropagationPhase.BubbleUp; foreach (VisualElement current3 in evt.path.bubbleUpPath) { bool flag5 = evt.Skip(current3); if (!flag5) { evt.currentTarget = current3; evt.currentTarget.HandleEvent(evt); } } } } evt.dispatch = false; evt.propagationPhase = PropagationPhase.None; evt.currentTarget = null; }
public void DispatchEvent(EventBase evt, IPanel panel) { MouseCaptureDispatchingStrategy.EventBehavior eventBehavior = MouseCaptureDispatchingStrategy.EventBehavior.None; IEventHandler eventHandler = (panel != null) ? panel.GetCapturingElement(PointerId.mousePointerId) : null; bool flag = eventHandler == null; if (!flag) { VisualElement visualElement = eventHandler as VisualElement; bool flag2 = evt.eventTypeId != EventBase <MouseCaptureOutEvent> .TypeId() && visualElement != null && visualElement.panel == null; if (flag2) { visualElement.ReleaseMouse(); } else { bool flag3 = panel != null && visualElement != null && visualElement.panel.contextType != panel.contextType; if (!flag3) { IMouseEvent mouseEvent = evt as IMouseEvent; bool flag4 = mouseEvent != null && (evt.target == null || evt.target == eventHandler); if (flag4) { eventBehavior = MouseCaptureDispatchingStrategy.EventBehavior.IsCapturable; eventBehavior |= MouseCaptureDispatchingStrategy.EventBehavior.IsSentExclusivelyToCapturingElement; } else { bool flag5 = evt.imguiEvent != null && evt.target == null; if (flag5) { eventBehavior = MouseCaptureDispatchingStrategy.EventBehavior.IsCapturable; } } bool flag6 = evt.eventTypeId == EventBase <MouseEnterWindowEvent> .TypeId() || evt.eventTypeId == EventBase <MouseLeaveWindowEvent> .TypeId() || evt.eventTypeId == EventBase <WheelEvent> .TypeId(); if (flag6) { eventBehavior = MouseCaptureDispatchingStrategy.EventBehavior.None; } bool flag7 = (eventBehavior & MouseCaptureDispatchingStrategy.EventBehavior.IsCapturable) == MouseCaptureDispatchingStrategy.EventBehavior.IsCapturable; if (flag7) { BaseVisualElementPanel baseVisualElementPanel = panel as BaseVisualElementPanel; bool flag8 = mouseEvent != null && baseVisualElementPanel != null; if (flag8) { IMouseEventInternal expr_139 = mouseEvent as IMouseEventInternal; bool flag9 = expr_139 == null || expr_139.recomputeTopElementUnderMouse; bool flag10 = flag9; if (flag10) { baseVisualElementPanel.RecomputeTopElementUnderPointer(mouseEvent.mousePosition, evt); } } evt.dispatch = true; evt.target = eventHandler; CallbackEventHandler expr_175 = eventHandler as CallbackEventHandler; if (expr_175 != null) { expr_175.HandleEventAtTargetPhase(evt); } bool flag11 = (eventBehavior & MouseCaptureDispatchingStrategy.EventBehavior.IsSentExclusivelyToCapturingElement) != MouseCaptureDispatchingStrategy.EventBehavior.IsSentExclusivelyToCapturingElement; if (flag11) { evt.target = null; } evt.currentTarget = null; evt.propagationPhase = PropagationPhase.None; evt.dispatch = false; evt.skipElements.Add(eventHandler); evt.stopDispatch = ((eventBehavior & MouseCaptureDispatchingStrategy.EventBehavior.IsSentExclusivelyToCapturingElement) == MouseCaptureDispatchingStrategy.EventBehavior.IsSentExclusivelyToCapturingElement); bool flag12 = evt.target is IMGUIContainer; if (flag12) { evt.propagateToIMGUI = true; evt.skipElements.Add(evt.target); } else { evt.propagateToIMGUI = false; } } } } } }