Fix DropDownButtonWidget ignoring yaml separator overrides.
This commit is contained in:
@@ -25,30 +25,26 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
public readonly string Separators = "dropdown-separators";
|
public readonly string Separators = "dropdown-separators";
|
||||||
public readonly string SeparatorImage = "separator";
|
public readonly string SeparatorImage = "separator";
|
||||||
public readonly TextAlign PanelAlign = TextAlign.Left;
|
public readonly TextAlign PanelAlign = TextAlign.Left;
|
||||||
|
public string PanelRoot;
|
||||||
|
|
||||||
Widget panel;
|
Widget panel;
|
||||||
MaskWidget fullscreenMask;
|
MaskWidget fullscreenMask;
|
||||||
Widget panelRoot;
|
Widget panelRoot;
|
||||||
readonly CachedTransform<(bool Disabled, bool Pressed, bool Hover, bool Focused), Sprite> getMarkerImage;
|
CachedTransform<(bool Disabled, bool Pressed, bool Hover, bool Focused), Sprite> getMarkerImage;
|
||||||
readonly CachedTransform<(bool Disabled, bool Pressed, bool Hover, bool Focused), Sprite> getSeparatorImage;
|
CachedTransform<(bool Disabled, bool Pressed, bool Hover, bool Focused), Sprite> getSeparatorImage;
|
||||||
|
|
||||||
public string PanelRoot;
|
|
||||||
public string SelectedItem;
|
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public DropDownButtonWidget(ModData modData)
|
public DropDownButtonWidget(ModData modData)
|
||||||
: base(modData)
|
: base(modData) { }
|
||||||
{
|
|
||||||
getMarkerImage = WidgetUtils.GetCachedStatefulImage(Decorations, DecorationMarker);
|
|
||||||
getSeparatorImage = WidgetUtils.GetCachedStatefulImage(Separators, SeparatorImage);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected DropDownButtonWidget(DropDownButtonWidget widget)
|
protected DropDownButtonWidget(DropDownButtonWidget widget)
|
||||||
: base(widget)
|
: base(widget)
|
||||||
{
|
{
|
||||||
PanelRoot = widget.PanelRoot;
|
PanelRoot = widget.PanelRoot;
|
||||||
getMarkerImage = WidgetUtils.GetCachedStatefulImage(Decorations, DecorationMarker);
|
Decorations = widget.Decorations;
|
||||||
getSeparatorImage = WidgetUtils.GetCachedStatefulImage(Separators, SeparatorImage);
|
DecorationMarker = widget.DecorationMarker;
|
||||||
|
Separators = widget.Separators;
|
||||||
|
SeparatorImage = widget.SeparatorImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Draw()
|
public override void Draw()
|
||||||
@@ -60,9 +56,15 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
var isDisabled = IsDisabled();
|
var isDisabled = IsDisabled();
|
||||||
var isHover = Ui.MouseOverWidget == this || Children.Any(c => c == Ui.MouseOverWidget);
|
var isHover = Ui.MouseOverWidget == this || Children.Any(c => c == Ui.MouseOverWidget);
|
||||||
|
|
||||||
|
if (getMarkerImage == null)
|
||||||
|
getMarkerImage = WidgetUtils.GetCachedStatefulImage(Decorations, DecorationMarker);
|
||||||
|
|
||||||
var arrowImage = getMarkerImage.Update((isDisabled, Depressed, isHover, false));
|
var arrowImage = getMarkerImage.Update((isDisabled, Depressed, isHover, false));
|
||||||
WidgetUtils.DrawSprite(arrowImage, stateOffset + new float2(rb.Right - (int)((rb.Height + arrowImage.Size.X) / 2), rb.Top + (int)((rb.Height - arrowImage.Size.Y) / 2)));
|
WidgetUtils.DrawSprite(arrowImage, stateOffset + new float2(rb.Right - (int)((rb.Height + arrowImage.Size.X) / 2), rb.Top + (int)((rb.Height - arrowImage.Size.Y) / 2)));
|
||||||
|
|
||||||
|
if (getSeparatorImage == null)
|
||||||
|
getSeparatorImage = WidgetUtils.GetCachedStatefulImage(Separators, SeparatorImage);
|
||||||
|
|
||||||
var separatorImage = getSeparatorImage.Update((isDisabled, Depressed, isHover, false));
|
var separatorImage = getSeparatorImage.Update((isDisabled, Depressed, isHover, false));
|
||||||
if (separatorImage != null)
|
if (separatorImage != null)
|
||||||
WidgetUtils.DrawSprite(separatorImage, stateOffset + new float2(-3, 0) + new float2(rb.Right - rb.Height + 4, rb.Top + (int)((rb.Height - separatorImage.Size.Y) / 2)));
|
WidgetUtils.DrawSprite(separatorImage, stateOffset + new float2(-3, 0) + new float2(rb.Right - rb.Height + 4, rb.Top + (int)((rb.Height - separatorImage.Size.Y) / 2)));
|
||||||
|
|||||||
Reference in New Issue
Block a user