private void OnGUI() { EditorGUI.BeginDisabledGroup(EditorApplication.isCompiling); DrawToolButtons(); DrawHeaders(); if (_contentScrolls == null || _contentScrolls.Length != 2) { _contentScrolls = new Vector2[] { Vector2.zero, Vector2.zero }; } EditorHelper.BeginVerticalSplit(contentSplitState); _contentScrolls[0] = EditorGUILayout.BeginScrollView(_contentScrolls[0]); var ids = Trace.ListTaskSourceIds(); foreach (var id in ids) { var item = Trace.GetTraceItem(id); DrawTraceItem(item); if (_selectedItem == null) { _selectedItem = item; } } EditorGUILayout.EndScrollView(); _contentScrolls[1] = EditorGUILayout.BeginScrollView(_contentScrolls[1], EditorStyles.helpBox); DrawStackTrace(); EditorGUILayout.EndScrollView(); EditorHelper.EndVerticalSplit(); EditorGUI.EndDisabledGroup(); }
private void DrawTraceItem(Trace.TraceItem item) { var realSizes = headerSplitState.realSizes; var original = GUI.backgroundColor; if (_selectedItem == item) { GUI.backgroundColor = Color.grey; } GUILayout.BeginHorizontal(EditorStyles.helpBox); GUILayout.Label(item.Name, GUILayout.Width(realSizes[0])); GUILayout.Label(item.IsAlive?"Alive":"Dead", GUILayout.Width(realSizes[1])); EditorGUILayout.LabelField(item.StackTrace, GUILayout.Width(realSizes[2])); GUILayout.EndHorizontal(); var rect = GUILayoutUtility.GetLastRect(); if (GUI.Button(rect, GUIContent.none, GUIStyle.none)) { _selectedItem = item; } GUI.backgroundColor = original; }