Fix key up events queueing duplicate deploy/scatter/stop orders.

This commit is contained in:
Paul Chote
2020-01-25 18:31:09 +00:00
committed by abcdefg30
parent 1e8912b4e4
commit 5c76a6e7a7

View File

@@ -207,6 +207,7 @@ namespace OpenRA.Mods.Common.Widgets
if (keyOverrides != null)
{
var noShiftButtons = new[] { guardButton, deployButton, attackMoveButton };
var keyUpButtons = new[] { guardButton, attackMoveButton };
keyOverrides.AddHandler(e =>
{
// HACK: allow command buttons to be triggered if the shift (queue order modifier) key is held
@@ -217,11 +218,20 @@ namespace OpenRA.Mods.Common.Widgets
foreach (var b in noShiftButtons)
{
if (b != null && !b.IsDisabled() && b.Key.IsActivatedBy(eNoShift))
{
b.OnKeyPress(e);
return true;
}
// Button is not used by this mod
if (b == null)
continue;
// Button is not valid for this event
if (b.IsDisabled() || !b.Key.IsActivatedBy(eNoShift))
continue;
// Event is not valid for this button
if (e.Event == KeyInputEvent.Up && !keyUpButtons.Contains(b))
continue;
b.OnKeyPress(e);
return true;
}
}