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"));
        }
    }