Add a tooltip text to overflowing ButtonWidget in hotkey settings panel

This commit is contained in:
Ivaylo Draganov
2019-07-02 03:47:24 +03:00
committed by abcdefg30
parent ef0cb7552d
commit 86c8dfe96e
3 changed files with 17 additions and 5 deletions

View File

@@ -207,11 +207,11 @@ namespace OpenRA.Mods.Common.Widgets
public override void MouseEntered() public override void MouseEntered()
{ {
if (TooltipContainer == null || GetTooltipText() == null) if (TooltipContainer == null)
return; return;
tooltipContainer.Value.SetTooltip(TooltipTemplate, if (GetTooltipText != null)
new WidgetArgs { { "button", this }, { "getText", GetTooltipText }, { "getDesc", GetTooltipDesc } }); tooltipContainer.Value.SetTooltip(TooltipTemplate, new WidgetArgs { { "button", this }, { "getText", GetTooltipText }, { "getDesc", GetTooltipDesc } });
} }
public override void MouseExited() public override void MouseExited()

View File

@@ -134,7 +134,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
key.Get<LabelWidget>("FUNCTION").GetText = () => hd.Description + ":"; key.Get<LabelWidget>("FUNCTION").GetText = () => hd.Description + ":";
var remapButton = key.Get<ButtonWidget>("HOTKEY"); var remapButton = key.Get<ButtonWidget>("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) if (manager.GetFirstDuplicate(hd.Name, manager[hd.Name].GetValue(), hd) != null)
remapButton.GetColor = () => ChromeMetrics.Get<Color>("HotkeyColorInvalid"); remapButton.GetColor = () => ChromeMetrics.Get<Color>("HotkeyColorInvalid");
@@ -171,7 +171,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
"onSave", () => "onSave", () =>
{ {
remapButton.GetText = () => manager[hd.Name].GetValue().DisplayString(); WidgetUtils.TruncateButtonToTooltip(remapButton, manager[hd.Name].GetValue().DisplayString());
remapButton.GetColor = () => ChromeMetrics.Get<Color>("ButtonTextColor"); remapButton.GetColor = () => ChromeMetrics.Get<Color>("ButtonTextColor");
} }
}, },

View File

@@ -276,6 +276,18 @@ namespace OpenRA.Mods.Common.Widgets
else else
label.GetTooltipText = null; 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<T, U> public class CachedTransform<T, U>