diff --git a/OpenRA.Mods.RA/Widgets/Delegates/DiplomacyDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/DiplomacyDelegate.cs index f95cd9d538..c12167848f 100644 --- a/OpenRA.Mods.RA/Widgets/Delegates/DiplomacyDelegate.cs +++ b/OpenRA.Mods.RA/Widgets/Delegates/DiplomacyDelegate.cs @@ -122,15 +122,20 @@ namespace OpenRA.Mods.RA.Widgets.Delegates } } - void ShowDropDown(Player p, Widget w) + void ShowDropDown(Player p, DropDownButtonWidget dropdown) { - DropDownButtonWidget.ShowDropDown(w, Enum.GetValues(typeof(Stance)).OfType(), - (s, width) => new LabelWidget - { - Bounds = new Rectangle(0, 0, width, 24), - Text = " {0}".F(s), - OnMouseUp = mi => { SetStance((ButtonWidget)w, p, s); return true; }, - }); + var stances = Enum.GetValues(typeof(Stance)).OfType().ToList(); + Func setupItem = (s, template) => + { + var item = ScrollItemWidget.Setup(template, + () => s == world.LocalPlayer.Stances[ p ], + () => SetStance(dropdown, p, s)); + + item.GetWidget("LABEL").GetText = () => s.ToString(); + return item; + }; + + dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 150, stances, setupItem); } void SetStance(ButtonWidget bw, Player p, Stance ss) diff --git a/OpenRA.Mods.RA/Widgets/Delegates/LobbyDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/LobbyDelegate.cs index 9695f19cb5..af721e38f0 100755 --- a/OpenRA.Mods.RA/Widgets/Delegates/LobbyDelegate.cs +++ b/OpenRA.Mods.RA/Widgets/Delegates/LobbyDelegate.cs @@ -271,7 +271,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates return true; } - bool ShowColorDropDown(Session.Slot s, ButtonWidget color) + bool ShowColorDropDown(Session.Slot s, DropDownButtonWidget color) { if (Map.Players[s.MapPlayer].LockColor) return false; @@ -294,12 +294,15 @@ namespace OpenRA.Mods.RA.Widgets.Delegates lumSlider.OnChange += _ => UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset()); rangeSlider.OnChange += _ => UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset()); UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset()); - - DropDownButtonWidget.ShowDropPanel(color, colorChooser, new List() {colorChooser.GetWidget("BUTTON_OK")}, () => { + + colorChooser.GetWidget("BUTTON_OK").OnClick = () => + { UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset()); UpdatePlayerColor(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset()); - return true; - }); + color.RemovePanel(); + }; + + color.AttachPanel(colorChooser); return true; } @@ -382,7 +385,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates }; name.OnLoseFocus = () => name.OnEnterKey(); - var color = template.GetWidget("COLOR"); + var color = template.GetWidget("COLOR"); color.OnMouseUp = _ => ShowColorDropDown(s, color); var colorBlock = color.GetWidget("COLORBLOCK");