diff --git a/Source/Editor/Content/Items/ContentItem.cs b/Source/Editor/Content/Items/ContentItem.cs
index 4fe75d2c2..2a0390b30 100644
--- a/Source/Editor/Content/Items/ContentItem.cs
+++ b/Source/Editor/Content/Items/ContentItem.cs
@@ -360,7 +360,7 @@ namespace FlaxEditor.Content
}
///
- /// Updates the tooltip text.
+ /// Updates the tooltip text text.
///
public virtual void UpdateTooltipText()
{
diff --git a/Source/Editor/CustomEditors/Editors/ActorTransformEditor.cs b/Source/Editor/CustomEditors/Editors/ActorTransformEditor.cs
index 2612440a4..fb7a0b29d 100644
--- a/Source/Editor/CustomEditors/Editors/ActorTransformEditor.cs
+++ b/Source/Editor/CustomEditors/Editors/ActorTransformEditor.cs
@@ -78,7 +78,7 @@ namespace FlaxEditor.CustomEditors.Editors
///
public class ScaleEditor : Float3Editor
{
- private Image _linkImage;
+ private Button _linkButton;
///
public override void Initialize(LayoutElementsContainer layout)
@@ -87,18 +87,22 @@ namespace FlaxEditor.CustomEditors.Editors
LinkValues = Editor.Instance.Windows.PropertiesWin.ScaleLinked;
- _linkImage = new Image
+ // Add button with the link icon.
+ //Editor.Instance.Icons.Link32
+ _linkButton = new IconButton(Editor.Instance.Icons.Link32)
{
Parent = LinkedLabel,
Width = 18,
Height = 18,
- Brush = LinkValues ? new SpriteBrush(Editor.Instance.Icons.Link32) : new SpriteBrush(),
- AnchorPreset = AnchorPresets.TopLeft,
- TooltipText = "Scale values are linked together.",
+ AnchorPreset = AnchorPresets.TopLeft
};
+
+ _linkButton.Clicked += ToggleLink;
+ SetLinkStyle();
+
var x = LinkedLabel.Text.Value.Length * 7 + 5;
- _linkImage.LocalX += x;
- _linkImage.LocalY += 1;
+ _linkButton.LocalX += x;
+ _linkButton.LocalY += 1;
LinkedLabel.SetupContextMenu += (label, menu, editor) =>
{
@@ -127,7 +131,14 @@ namespace FlaxEditor.CustomEditors.Editors
{
LinkValues = !LinkValues;
Editor.Instance.Windows.PropertiesWin.ScaleLinked = LinkValues;
- _linkImage.Brush = LinkValues ? new SpriteBrush(Editor.Instance.Icons.Link32) : new SpriteBrush();
+ SetLinkStyle();
+ }
+
+ private void SetLinkStyle()
+ {
+ Color backgroundColor = LinkValues ? FlaxEngine.GUI.Style.Current.BackgroundSelected : FlaxEngine.GUI.Style.Current.ForegroundDisabled;
+ _linkButton.SetColors(backgroundColor);
+ _linkButton.TooltipText = (LinkValues ? "Unlink" : "Link") + " values for uniform scaling.";
}
}
}
diff --git a/Source/Editor/Utilities/Utils.cs b/Source/Editor/Utilities/Utils.cs
index 5f836e069..acc0cf605 100644
--- a/Source/Editor/Utilities/Utils.cs
+++ b/Source/Editor/Utilities/Utils.cs
@@ -1037,7 +1037,9 @@ namespace FlaxEditor.Utilities
/// The processed name path.
public static string GetAssetNamePath(string path)
{
- path = GetAssetNamePathWithExt(path);
+ var projectFolder = Globals.ProjectFolder;
+ if (path.StartsWith(projectFolder))
+ path = path.Substring(projectFolder.Length + 1);
return StringUtils.GetPathWithoutExtension(path);
}
diff --git a/Source/Engine/UI/GUI/Common/Button.cs b/Source/Engine/UI/GUI/Common/Button.cs
index e3bee0017..8ab6366eb 100644
--- a/Source/Engine/UI/GUI/Common/Button.cs
+++ b/Source/Engine/UI/GUI/Common/Button.cs
@@ -10,7 +10,7 @@ namespace FlaxEngine.GUI
public class Button : ContainerControl
{
///
- /// The default height fro the buttons.
+ /// The default height for the buttons.
///
public const float DefaultHeight = 24.0f;
@@ -195,7 +195,7 @@ namespace FlaxEngine.GUI
/// Sets the button colors palette based on a given main color.
///
/// The main color.
- public void SetColors(Color color)
+ public virtual void SetColors(Color color)
{
BackgroundColor = color;
BorderColor = color.RGBMultiplied(0.5f);
diff --git a/Source/Engine/UI/GUI/Common/IconButton.cs b/Source/Engine/UI/GUI/Common/IconButton.cs
new file mode 100644
index 000000000..e2652cd9f
--- /dev/null
+++ b/Source/Engine/UI/GUI/Common/IconButton.cs
@@ -0,0 +1,74 @@
+// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
+
+using System;
+
+namespace FlaxEngine.GUI
+{
+ ///
+ /// Button with an icon.
+ ///
+ public class IconButton : Button
+ {
+ ///
+ /// The sprite rendered on the button.
+ ///
+ public SpriteHandle ButtonSprite { get; set; }
+
+ ///
+ /// Whether or not to hide the border of the button.
+ ///
+ public bool HideBorder = true;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The sprite used by the button.
+ public IconButton(SpriteHandle buttonSprite)
+ : this(0, 0, buttonSprite)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Position X coordinate
+ /// Position Y coordinate
+ /// The sprite used by the button.
+ /// Width
+ /// Height
+ /// Whether or not to hide the border.
+ public IconButton(float x, float y, SpriteHandle buttonSprite, float width = 120, float height = DefaultHeight, bool hideBorder = true)
+ : base(x, y, width, height)
+ {
+ ButtonSprite = buttonSprite;
+ BackgroundBrush = new SpriteBrush(ButtonSprite);
+ HideBorder = hideBorder;
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Position
+ /// Size
+ /// The sprite used by the button.
+ public IconButton(Float2 location, Float2 size, SpriteHandle buttonSprite)
+ : this(location.X, location.Y, buttonSprite, size.X, size.Y)
+ {
+ }
+
+ ///
+ /// Sets the colors of the button, taking into account the field.>
+ ///
+ /// The color to use.
+ public override void SetColors(Color color)
+ {
+ BackgroundColor = color;
+ BackgroundColorSelected = color.RGBMultiplied(0.8f);
+ BackgroundColorHighlighted = color.RGBMultiplied(1.2f);
+
+ BorderColor = HideBorder ? Color.Transparent : color.RGBMultiplied(0.5f);
+ BorderColorSelected = BorderColor;
+ BorderColorHighlighted = BorderColor;
+ }
+ }
+}