diff --git a/OpenRA.Mods.Common/Widgets/ButtonWidget.cs b/OpenRA.Mods.Common/Widgets/ButtonWidget.cs index f5d3fa247f..d334202e6d 100644 --- a/OpenRA.Mods.Common/Widgets/ButtonWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ButtonWidget.cs @@ -207,11 +207,11 @@ namespace OpenRA.Mods.Common.Widgets public override void MouseEntered() { - if (TooltipContainer == null || GetTooltipText() == null) + if (TooltipContainer == null) return; - tooltipContainer.Value.SetTooltip(TooltipTemplate, - new WidgetArgs { { "button", this }, { "getText", GetTooltipText }, { "getDesc", GetTooltipDesc } }); + if (GetTooltipText != null) + tooltipContainer.Value.SetTooltip(TooltipTemplate, new WidgetArgs { { "button", this }, { "getText", GetTooltipText }, { "getDesc", GetTooltipDesc } }); } public override void MouseExited() diff --git a/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs index 8b86a18e0a..905b06a9cb 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs @@ -134,7 +134,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic key.Get("FUNCTION").GetText = () => hd.Description + ":"; var remapButton = key.Get("HOTKEY"); - remapButton.GetText = () => manager[hd.Name].GetValue().DisplayString(); + WidgetUtils.TruncateButtonToTooltip(remapButton, manager[hd.Name].GetValue().DisplayString()); if (manager.GetFirstDuplicate(hd.Name, manager[hd.Name].GetValue(), hd) != null) remapButton.GetColor = () => ChromeMetrics.Get("HotkeyColorInvalid"); @@ -171,7 +171,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { "onSave", () => { - remapButton.GetText = () => manager[hd.Name].GetValue().DisplayString(); + WidgetUtils.TruncateButtonToTooltip(remapButton, manager[hd.Name].GetValue().DisplayString()); remapButton.GetColor = () => ChromeMetrics.Get("ButtonTextColor"); } }, diff --git a/OpenRA.Mods.Common/Widgets/WidgetUtils.cs b/OpenRA.Mods.Common/Widgets/WidgetUtils.cs index 08dda8f70e..5c6ca50d08 100644 --- a/OpenRA.Mods.Common/Widgets/WidgetUtils.cs +++ b/OpenRA.Mods.Common/Widgets/WidgetUtils.cs @@ -276,6 +276,18 @@ namespace OpenRA.Mods.Common.Widgets else label.GetTooltipText = null; } + + public static void TruncateButtonToTooltip(ButtonWidget button, string text) + { + var truncatedText = TruncateText(text, button.Bounds.Width - button.LeftMargin - button.RightMargin, Game.Renderer.Fonts[button.Font]); + + button.GetText = () => truncatedText; + + if (text != truncatedText) + button.GetTooltipText = () => text; + else + button.GetTooltipText = null; + } } public class CachedTransform