void EditFilters(PropertyDefinition p) { if (Project.UseFilters) { GUIStyle s = new GUIStyle(EditorStyles.miniButton); s.alignment = TextAnchor.MiddleLeft; Rect menuRect; menuRect = GUILayoutUtility.GetLastRect(); menuRect.x += 85; if (GUILayout.Button("", s, GUILayout.MinWidth(200))) { GenericMenu menu = new GenericMenu(); foreach (FilterDefinition f in Project.EnabledFilters) { menu.AddItem(new GUIContent(f.Name), f.IsOn(p.Filters), FilterSetter(p, f)); } menu.DropDown(menuRect); EditorGUIUtility.ExitGUI(); } // rect of the button var r = GUILayoutUtility.GetLastRect(); var labelRect = r; labelRect.xMin += 3; labelRect.yMin -= 1; labelRect.xMax -= 17; //GUILayout.BeginArea(r); foreach (FilterDefinition f in Project.EnabledFilters) { if (f.IsOn(p.Filters)) { var label = DEditorGUI.MiniLabelWithColor(ToUnityColor(f.Color)); var sizex = Mathf.Min(label.CalcSize(new GUIContent(f.Name)).x, labelRect.width); GUI.Label(labelRect, f.Name, label); labelRect.xMin += sizex; labelRect.xMin = Mathf.Min(labelRect.xMin, labelRect.xMax); } } //GUILayout.EndArea(); GUI.DrawTexture(new Rect(r.xMax - 18, r.yMin, 16, 16), DEditorGUI.LoadIcon("ascen-ico-arrow-down")); } }