void UpdateEventCallbacks(EventDebuggerEventRecord eventBase) { ClearEventCallbacks(); if (eventBase == null) { return; } var callbacks = m_Debugger.GetCalls(panel, eventBase); if (callbacks != null) { foreach (EventDebuggerCallTrace callback in callbacks) { VisualElement container = new VisualElement { name = "line-container" }; Label timeStamp = new Label { name = "timestamp" }; Label handler = new Label { name = "handler" }; Label phaseDurationContainer = new Label { name = "phaseDurationContainer" }; Label phase = new Label { name = "phase" }; Label duration = new Label { name = "duration" }; timeStamp.AddToClassList("log-line-item"); handler.AddToClassList("log-line-item"); phaseDurationContainer.AddToClassList("log-line-item"); timeStamp.text = "[" + eventBase.TimestampString() + "]"; handler.text = callback.callbackName; if (callback.immediatePropagationHasStopped) { handler.text += " Immediately Stopped Propagation"; } else if (callback.propagationHasStopped) { handler.text += " Stopped Propagation"; } if (callback.defaultHasBeenPrevented) { handler.text += " (Default Prevented)"; } phase.text = callback.eventBase.propagationPhase.ToString(); duration.text = "Duration: " + callback.duration / 1000f + "ms"; container.Add(timeStamp); container.Add(handler); phaseDurationContainer.Add(phase); phaseDurationContainer.Add(duration); container.Add(phaseDurationContainer); m_EventCallbacksScrollView.Add(container); var hash = callback.callbackHashCode; HighlightCodeline(hash); } } var defaultActions = m_Debugger.GetDefaultActions(panel, eventBase); if (defaultActions == null) { return; } foreach (EventDebuggerDefaultActionTrace defaultAction in defaultActions) { VisualElement container = new VisualElement { name = "line-container" }; Label timeStamp = new Label { name = "timestamp" }; Label handler = new Label { name = "handler" }; Label phaseDurationContainer = new Label { name = "phaseDurationContainer" }; Label phase = new Label { name = "phase" }; Label duration = new Label { name = "duration" }; timeStamp.AddToClassList("log-line-item"); handler.AddToClassList("log-line-item"); phaseDurationContainer.AddToClassList("log-line-item"); timeStamp.text = "[" + eventBase.TimestampString() + "]"; handler.text = defaultAction.targetName + "." + (defaultAction.phase == PropagationPhase.AtTarget ? "ExecuteDefaultActionAtTarget" : "ExecuteDefaultAction"); duration.text = "Duration: " + defaultAction.duration / 1000f + "ms"; container.Add(timeStamp); container.Add(handler); phaseDurationContainer.Add(phase); phaseDurationContainer.Add(duration); container.Add(phaseDurationContainer); m_EventCallbacksScrollView.Add(container); } }