Skip to content

Commit

Permalink
Fixed style and performance issues for display selection
Browse files Browse the repository at this point in the history
  • Loading branch information
everclear72216 committed Feb 6, 2020
1 parent f620e4a commit 64509b6
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 15 deletions.
21 changes: 11 additions & 10 deletions OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs
Expand Up @@ -54,7 +54,7 @@ static SettingsLogic()
{
var original = Game.Settings;

// hardware changes are able to invalidate the stored value so get the current display
// Saved settings may have been invalidated by a hardware change
original.Graphics.VideoDisplay = Game.Renderer.CurrentDisplay;

OriginalSoundDevice = original.Sound.Device;
Expand Down Expand Up @@ -269,7 +269,8 @@ Action InitDisplayPanel(Widget panel)

var displaySelectionDropDown = panel.Get<DropDownButtonWidget>("DISPLAY_SELECTION_DROPDOWN");
displaySelectionDropDown.OnMouseDown = _ => ShowDisplaySelectionDropdown(displaySelectionDropDown, ds);
displaySelectionDropDown.GetText = () => string.Format("{0} {1}", DisplayBaseName, ds.VideoDisplay);
var displaySelectionTextTransform = new CachedTransform<int, string>(i => "{0} {1}".F(DisplayBaseName, i + 1));
displaySelectionDropDown.GetText = () => displaySelectionTextTransform.Update(ds.VideoDisplay);

var targetLinesDropDown = panel.Get<DropDownButtonWidget>("TARGET_LINES_DROPDOWN");
targetLinesDropDown.OnMouseDown = _ => ShowTargetLinesDropdown(targetLinesDropDown, gs);
Expand Down Expand Up @@ -303,7 +304,7 @@ Action InitDisplayPanel(Widget panel)

uiScaleDropdown.IsDisabled = () => disableUIScale;

panel.Get("SCREEN_SELECTION").IsVisible = () => ds.Mode != WindowMode.Windowed;
panel.Get("DISPLAY_SELECTION").IsVisible = () => ds.Mode != WindowMode.Windowed;
panel.Get("WINDOW_RESOLUTION").IsVisible = () => ds.Mode == WindowMode.Windowed;
var windowWidth = panel.Get<TextFieldWidget>("WINDOW_WIDTH");
var origWidthText = windowWidth.Text = ds.WindowedSize.X.ToString();
Expand Down Expand Up @@ -388,7 +389,7 @@ Action ResetDisplayPanel(Widget panel)
ds.CursorDouble = dds.CursorDouble;
ds.ViewportDistance = dds.ViewportDistance;
// saved settings may have been invalidated by a hardware change
// Saved settings may have been invalidated by a hardware change
ds.VideoDisplay = Game.Renderer.CurrentDisplay;
if (ds.UIScale != dds.UIScale)
Expand Down Expand Up @@ -850,19 +851,19 @@ static void ShowStatusBarsDropdown(DropDownButtonWidget dropdown, GameSettings s

static void ShowDisplaySelectionDropdown(DropDownButtonWidget dropdown, GraphicSettings s)
{
var options = Exts.MakeArray(Game.Renderer.DisplayCount, i => string.Format("{0} {1}", DisplayBaseName, i));
var options = Exts.MakeArray(Game.Renderer.DisplayCount, i => "{0} {1}".F(DisplayBaseName, i + 1));

Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
Func<int, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
{
var item = ScrollItemWidget.Setup(itemTemplate,
() => s.VideoDisplay == options.IndexOf(o),
() => s.VideoDisplay = options.IndexOf(o));
() => s.VideoDisplay == o,
() => s.VideoDisplay = o);
item.Get<LabelWidget>("LABEL").GetText = () => o;
item.Get<LabelWidget>("LABEL").GetText = () => options[o];
return item;
};

dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options, setupItem);
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, Enumerable.Range(0, options.Length), setupItem);
}

static void ShowTargetLinesDropdown(DropDownButtonWidget dropdown, GameSettings s)
Expand Down
2 changes: 1 addition & 1 deletion OpenRA.Platforms.Default/Sdl2PlatformWindow.cs
Expand Up @@ -145,7 +145,7 @@ public Sdl2PlatformWindow(Size requestEffectiveWindowSize, WindowMode windowMode

Console.WriteLine("Using SDL 2 with OpenGL{0} renderer", useGLES ? " ES" : "");

if (videoDisplay >= DisplayCount)
if (videoDisplay < 0 || videoDisplay >= DisplayCount)
videoDisplay = 0;

SDL.SDL_DisplayMode display;
Expand Down
4 changes: 2 additions & 2 deletions mods/cnc/chrome/settings.yaml
Expand Up @@ -235,10 +235,10 @@ Container@SETTINGS_PANEL:
Height: 15
Font: Tiny
Text: Video mode and window size changes require restart
Container@SCREEN_SELECTION:
Container@DISPLAY_SELECTION:
Y: 240
Children:
Label@SELECT_MONITOR:
Label@DISPLAY_SELECTION_LABEL:
X: 15
Height: 25
Width: 120
Expand Down
4 changes: 2 additions & 2 deletions mods/common/chrome/settings.yaml
Expand Up @@ -256,10 +256,10 @@ Background@SETTINGS_PANEL:
Height: 15
Font: Tiny
Text: Video mode and window size changes require restart
Container@SCREEN_SELECTION:
Container@DISPLAY_SELECTION:
Y: 240
Children:
Label@SELECT_MONITOR:
Label@DISPLAY_SELECTION_LABEL:
X: 15
Height: 25
Width: 120
Expand Down

0 comments on commit 64509b6

Please sign in to comment.