Fix multi-line tooltip padding.
This commit is contained in:
@@ -188,7 +188,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
tooltipContainer.Value.SetTooltip(TooltipTemplate,
|
tooltipContainer.Value.SetTooltip(TooltipTemplate,
|
||||||
new WidgetArgs { { "button", this } });
|
new WidgetArgs { { "button", this }, { "getText", GetTooltipText } });
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void MouseExited()
|
public override void MouseExited()
|
||||||
|
|||||||
@@ -20,33 +20,42 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
public SimpleTooltipLogic(Widget widget, TooltipContainerWidget tooltipContainer, Func<string> getText)
|
public SimpleTooltipLogic(Widget widget, TooltipContainerWidget tooltipContainer, Func<string> getText)
|
||||||
{
|
{
|
||||||
var label = widget.Get<LabelWidget>("LABEL");
|
var label = widget.Get<LabelWidget>("LABEL");
|
||||||
|
var spacing = widget.Get("LINE_HEIGHT");
|
||||||
|
widget.RemoveChildren();
|
||||||
|
|
||||||
var font = Game.Renderer.Fonts[label.Font];
|
var font = Game.Renderer.Fonts[label.Font];
|
||||||
var cachedWidth = 0;
|
|
||||||
var cachedHeight = 0;
|
|
||||||
var horizontalPadding = label.Bounds.Width - widget.Bounds.Width;
|
var horizontalPadding = label.Bounds.Width - widget.Bounds.Width;
|
||||||
if (horizontalPadding <= 0)
|
if (horizontalPadding <= 0)
|
||||||
horizontalPadding = 2 * label.Bounds.X;
|
horizontalPadding = 2 * label.Bounds.X;
|
||||||
var vertcalPadding = widget.Bounds.Height - label.Bounds.Height;
|
|
||||||
if (vertcalPadding <= 0)
|
var cachedText = "";
|
||||||
vertcalPadding = 2 * label.Bounds.Y;
|
|
||||||
var labelText = "";
|
|
||||||
tooltipContainer.BeforeRender = () =>
|
tooltipContainer.BeforeRender = () =>
|
||||||
{
|
{
|
||||||
labelText = getText();
|
var text = getText();
|
||||||
var textDim = font.Measure(labelText);
|
if (text == cachedText)
|
||||||
if (textDim.X != cachedWidth || textDim.Y != cachedHeight)
|
return;
|
||||||
{
|
|
||||||
label.Bounds.Width = textDim.X;
|
|
||||||
widget.Bounds.Width = horizontalPadding + textDim.X;
|
|
||||||
label.Bounds.Height = textDim.Y;
|
|
||||||
widget.Bounds.Height = vertcalPadding + textDim.Y;
|
|
||||||
cachedWidth = textDim.X;
|
|
||||||
cachedHeight = textDim.Y;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
label.GetText = () => labelText;
|
var lines = text.Split('\n');
|
||||||
|
var textWidth = font.Measure(text).X;
|
||||||
|
|
||||||
|
// Set up label widgets
|
||||||
|
widget.RemoveChildren();
|
||||||
|
var bottom = 0;
|
||||||
|
for (var i = 0; i < lines.Length; i++)
|
||||||
|
{
|
||||||
|
var line = (LabelWidget)label.Clone();
|
||||||
|
var lineText = lines[i];
|
||||||
|
line.Bounds.Y += spacing.Bounds.Y + i * spacing.Bounds.Height;
|
||||||
|
line.Bounds.Width = textWidth;
|
||||||
|
line.GetText = () => lineText;
|
||||||
|
widget.AddChild(line);
|
||||||
|
bottom = line.Bounds.Y + line.Bounds.Height;
|
||||||
|
}
|
||||||
|
|
||||||
|
widget.Bounds.Width = horizontalPadding + textWidth;
|
||||||
|
widget.Bounds.Height = bottom + spacing.Bounds.Y;
|
||||||
|
cachedText = text;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -315,7 +315,7 @@ Container@EDITOR_WORLD_ROOT:
|
|||||||
Visible: false
|
Visible: false
|
||||||
Width: PARENT_RIGHT - 35
|
Width: PARENT_RIGHT - 35
|
||||||
TooltipContainer: TOOLTIP_CONTAINER
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
TooltipTemplate: TWO_LINE_TOOLTIP
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
IgnoreChildMouseOver: true
|
IgnoreChildMouseOver: true
|
||||||
Children:
|
Children:
|
||||||
ActorPreview@ACTOR_PREVIEW:
|
ActorPreview@ACTOR_PREVIEW:
|
||||||
|
|||||||
@@ -3,23 +3,12 @@ Background@SIMPLE_TOOLTIP:
|
|||||||
Background: panel-black
|
Background: panel-black
|
||||||
Height: 27
|
Height: 27
|
||||||
Children:
|
Children:
|
||||||
|
Container@LINE_HEIGHT:
|
||||||
|
Y: 2
|
||||||
|
Height: 19
|
||||||
Label@LABEL:
|
Label@LABEL:
|
||||||
X: 5
|
X: 5
|
||||||
Height: 23
|
Y: 0-2
|
||||||
Font: Bold
|
|
||||||
|
|
||||||
Background@TWO_LINE_TOOLTIP:
|
|
||||||
Logic: ButtonTooltipLogic
|
|
||||||
Background: panel-black
|
|
||||||
Height: 48
|
|
||||||
Children:
|
|
||||||
Label@LABEL:
|
|
||||||
X: 5
|
|
||||||
Height: 46
|
|
||||||
Font: Bold
|
|
||||||
Label@HOTKEY:
|
|
||||||
Visible: false
|
|
||||||
TextColor: FFFF00
|
|
||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
|
|
||||||
|
|||||||
@@ -3,29 +3,15 @@ Background@SIMPLE_TOOLTIP:
|
|||||||
Background: dialog3
|
Background: dialog3
|
||||||
Height: 34
|
Height: 34
|
||||||
Children:
|
Children:
|
||||||
|
Container@LINE_HEIGHT:
|
||||||
|
Y: 5
|
||||||
|
Height: 19
|
||||||
Label@LABEL:
|
Label@LABEL:
|
||||||
X: 5
|
X: 5
|
||||||
Y: 3
|
Y: 0-2
|
||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
|
|
||||||
Background@TWO_LINE_TOOLTIP:
|
|
||||||
Logic: ButtonTooltipLogic
|
|
||||||
Background: dialog3
|
|
||||||
Height: 54
|
|
||||||
Children:
|
|
||||||
Label@LABEL:
|
|
||||||
X: 5
|
|
||||||
Y: 3
|
|
||||||
Height: 46
|
|
||||||
Font: Bold
|
|
||||||
Label@HOTKEY:
|
|
||||||
Visible: false
|
|
||||||
Y: 3
|
|
||||||
Height: 23
|
|
||||||
TextColor: FFFF00
|
|
||||||
Font: Bold
|
|
||||||
|
|
||||||
Background@BUTTON_TOOLTIP:
|
Background@BUTTON_TOOLTIP:
|
||||||
Logic: ButtonTooltipLogic
|
Logic: ButtonTooltipLogic
|
||||||
Background: dialog3
|
Background: dialog3
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ Container@EDITOR_WORLD_ROOT:
|
|||||||
Visible: false
|
Visible: false
|
||||||
Width: PARENT_RIGHT - 35
|
Width: PARENT_RIGHT - 35
|
||||||
TooltipContainer: TOOLTIP_CONTAINER
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
TooltipTemplate: TWO_LINE_TOOLTIP
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
IgnoreChildMouseOver: true
|
IgnoreChildMouseOver: true
|
||||||
Children:
|
Children:
|
||||||
ActorPreview@ACTOR_PREVIEW:
|
ActorPreview@ACTOR_PREVIEW:
|
||||||
|
|||||||
@@ -3,29 +3,15 @@ Background@SIMPLE_TOOLTIP:
|
|||||||
Background: dialog4
|
Background: dialog4
|
||||||
Height: 32
|
Height: 32
|
||||||
Children:
|
Children:
|
||||||
|
Container@LINE_HEIGHT:
|
||||||
|
Y: 3
|
||||||
|
Height: 19
|
||||||
Label@LABEL:
|
Label@LABEL:
|
||||||
X: 7
|
X: 7
|
||||||
Y: 2
|
Y: 0-1
|
||||||
Height: 23
|
Height: 23
|
||||||
Font: Bold
|
Font: Bold
|
||||||
|
|
||||||
Background@TWO_LINE_TOOLTIP:
|
|
||||||
Logic: ButtonTooltipLogic
|
|
||||||
Background: dialog4
|
|
||||||
Height: 52
|
|
||||||
Children:
|
|
||||||
Label@LABEL:
|
|
||||||
X: 7
|
|
||||||
Y: 2
|
|
||||||
Height: 46
|
|
||||||
Font: Bold
|
|
||||||
Label@HOTKEY:
|
|
||||||
Visible: false
|
|
||||||
Y: 2
|
|
||||||
Height: 23
|
|
||||||
TextColor: FFFF00
|
|
||||||
Font: Bold
|
|
||||||
|
|
||||||
Background@BUTTON_TOOLTIP:
|
Background@BUTTON_TOOLTIP:
|
||||||
Logic: ButtonTooltipLogic
|
Logic: ButtonTooltipLogic
|
||||||
Background: dialog4
|
Background: dialog4
|
||||||
|
|||||||
Reference in New Issue
Block a user