using System; using UnityEditor; using UnityEngine; namespace Unity.PlasticSCM.Editor.UI { internal static class DrawActionButtonWithMenu { internal static void For(string buttonText, Action buttonAction, GenericMenu actionMenu) { // Action button GUIContent buttonContent = new GUIContent(buttonText); GUIStyle buttonStyle = new GUIStyle(EditorStyles.miniButtonLeft); buttonStyle.stretchWidth = false; float width = MeasureMaxWidth.ForTexts(buttonStyle, buttonText); Rect rt = GUILayoutUtility.GetRect( buttonContent, buttonStyle, GUILayout.MinWidth(width), GUILayout.MaxWidth(width)); if (GUI.Button(rt, buttonContent, buttonStyle)) { buttonAction(); } // Menu dropdown GUIStyle dropDownStyle = new GUIStyle(EditorStyles.miniButtonRight); GUIContent dropDownContent = new GUIContent(string.Empty, Images.GetDropDownIcon()); Rect dropDownRect = GUILayoutUtility.GetRect( dropDownContent, dropDownStyle, GUILayout.MinWidth(DROPDOWN_BUTTON_WIDTH), GUILayout.MaxWidth(DROPDOWN_BUTTON_WIDTH)); if (EditorGUI.DropdownButton(dropDownRect, dropDownContent, FocusType.Passive, dropDownStyle)) { actionMenu.DropDown(dropDownRect); } } const int DROPDOWN_BUTTON_WIDTH = 16; } }