Expose separate middle and right mouse scroll config.

This commit is contained in:
Paul Chote
2016-04-17 21:23:28 -04:00
parent 6323f763f1
commit 9d02c53638
5 changed files with 107 additions and 72 deletions

View File

@@ -402,9 +402,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
MakeMouseFocusSettingsLive();
};
var mouseScrollDropdown = panel.Get<DropDownButtonWidget>("MOUSE_SCROLL");
mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown, gs);
mouseScrollDropdown.GetText = () => gs.MouseScroll.ToString();
var middleMouseScrollDropdown = panel.Get<DropDownButtonWidget>("MIDDLE_MOUSE_SCROLL");
middleMouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(middleMouseScrollDropdown, gs, false);
middleMouseScrollDropdown.GetText = () => gs.MiddleMouseScroll.ToString();
var rightMouseScrollDropdown = panel.Get<DropDownButtonWidget>("RIGHT_MOUSE_SCROLL");
rightMouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(rightMouseScrollDropdown, gs, true);
rightMouseScrollDropdown.GetText = () => gs.RightMouseScroll.ToString();
var zoomModifierDropdown = panel.Get<DropDownButtonWidget>("ZOOM_MODIFIER");
zoomModifierDropdown.OnMouseDown = _ => ShowZoomModifierDropdown(zoomModifierDropdown, gs);
@@ -573,7 +577,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return () =>
{
gs.UseClassicMouseStyle = dgs.UseClassicMouseStyle;
gs.MouseScroll = dgs.MouseScroll;
gs.MiddleMouseScroll = dgs.MiddleMouseScroll;
gs.RightMouseScroll = dgs.RightMouseScroll;
gs.LockMouseWindow = dgs.LockMouseWindow;
gs.ViewportEdgeScroll = dgs.ViewportEdgeScroll;
gs.ViewportEdgeScrollStep = dgs.ViewportEdgeScrollStep;
@@ -633,7 +638,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
};
}
static bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s)
static bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s, bool rightMouse)
{
var options = new Dictionary<string, MouseScrollType>()
{
@@ -646,8 +651,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
{
var item = ScrollItemWidget.Setup(itemTemplate,
() => s.MouseScroll == options[o],
() => s.MouseScroll = options[o]);
() => (rightMouse ? s.RightMouseScroll : s.MiddleMouseScroll) == options[o],
() => { if (rightMouse) s.RightMouseScroll = options[o]; else s.MiddleMouseScroll = options[o]; });
item.Get<LabelWidget>("LABEL").GetText = () => o;
return item;
};