51 lines
1.5 KiB
C#
51 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|