Files
GameDevTVObstacleDodge/Library/PackageCache/com.unity.collab-proxy@1ec4e416a4af/Editor/UI/DrawActionButtonWithMenu.cs

129 lines
3.9 KiB
C#
Raw Normal View History

2026-01-08 16:50:20 +00:00
using System;
using UnityEditor;
using UnityEngine;
namespace Unity.PlasticSCM.Editor.UI
{
internal static class DrawActionButtonWithMenu
{
internal static void For(
string text,
string tooltip,
Action buttonAction,
GenericMenu actionMenu)
{
float width = MeasureMaxWidth.ForTexts(UnityStyles.PendingChangesTab.ActionButtonLeft, text);
For(
text,
tooltip,
width,
buttonAction,
actionMenu,
UnityStyles.PendingChangesTab.ActionButtonLeft,
UnityStyles.PendingChangesTab.DropDownButton);
}
internal static void ForTopbar(
string text,
string tooltip,
Action buttonAction,
GenericMenu actionMenu)
{
float width = MeasureMaxWidth.ForTexts(UnityStyles.Topbar.Button, text);
For(
text,
tooltip,
width,
buttonAction,
actionMenu,
UnityStyles.Topbar.ButtonLeft,
UnityStyles.Topbar.ButtonRight);
}
internal static void ForCommentsSection(
string text,
float totalWidth,
Action buttonAction,
GenericMenu actionMenu)
{
// Action button
GUIContent buttonContent = new GUIContent(text);
Rect rt = GUILayoutUtility.GetRect(
buttonContent,
UnityStyles.PendingChangesTab.ActionButtonLeft,
GUILayout.MinWidth(totalWidth - DROPDOWN_BUTTON_WIDTH),
GUILayout.MaxWidth(totalWidth - DROPDOWN_BUTTON_WIDTH));
if (GUI.Button(rt, buttonContent, UnityStyles.PendingChangesTab.ActionButton))
{
buttonAction();
}
// Menu dropdown
GUIContent dropDownContent = new GUIContent(
string.Empty, Images.GetDropDownIcon());
Rect dropDownRect = GUILayoutUtility.GetRect(
dropDownContent,
UnityStyles.PendingChangesTab.DropDownButton,
GUILayout.MinWidth(DROPDOWN_BUTTON_WIDTH),
GUILayout.MaxWidth(DROPDOWN_BUTTON_WIDTH));
if (EditorGUI.DropdownButton(
dropDownRect,
dropDownContent,
FocusType.Passive,
UnityStyles.PendingChangesTab.DropDownButton))
{
actionMenu.DropDown(dropDownRect);
}
}
static void For(
string text,
string tooltip,
float width,
Action buttonAction,
GenericMenu actionMenu,
GUIStyle buttonStyle,
GUIStyle dropDownStyle)
{
// Action button
GUIContent buttonContent = new GUIContent(text, tooltip);
Rect rt = GUILayoutUtility.GetRect(
buttonContent,
buttonStyle,
GUILayout.MinWidth(width),
GUILayout.MaxWidth(width));
if (GUI.Button(rt, buttonContent, buttonStyle))
{
buttonAction();
}
// Menu dropdown
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;
}
}