Hack in fix for #3087 (hotkeys triggering accidentally in Virtual Pad)

This commit is contained in:
YoshiRulz 2022-01-24 15:17:38 +10:00
parent c0056123cd
commit 75e9ad0a40
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
4 changed files with 22 additions and 3 deletions

View File

@ -45,6 +45,7 @@ namespace BizHawk.Client.EmuHawk
private readonly PadSchema _schema;
private readonly InputManager _inputManager;
private readonly EventHandler _setLastFocusedNud;
private bool _readOnly;
public void UpdateValues()
@ -70,7 +71,7 @@ namespace BizHawk.Client.EmuHawk
}
}
public VirtualPad(PadSchema schema, InputManager inputManager)
public VirtualPad(PadSchema schema, InputManager inputManager, EventHandler setLastFocusedNUD)
{
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.UserPaint, true);
@ -79,6 +80,7 @@ namespace BizHawk.Client.EmuHawk
Dock = DockStyle.Top | DockStyle.Left;
_schema = schema;
_inputManager = inputManager;
_setLastFocusedNud = setLastFocusedNUD;
}
private void VirtualPadControl_Load(object sender, EventArgs e)
@ -131,6 +133,7 @@ namespace BizHawk.Client.EmuHawk
},
AnalogSchema analog => new VirtualPadAnalogStick(
_inputManager,
_setLastFocusedNud,
analog.Name,
analog.SecondaryName,
analog.Spec,
@ -142,6 +145,7 @@ namespace BizHawk.Client.EmuHawk
},
TargetedPairSchema targetedPair => new VirtualPadTargetScreen(
_inputManager.StickyXorAdapter,
_setLastFocusedNud,
targetedPair.Name,
targetedPair.SecondaryName,
targetedPair.MaxX,

View File

@ -22,7 +22,9 @@ namespace BizHawk.Client.EmuHawk
private bool _readOnly;
public override bool BlocksInputWhenFocused { get; } = false;
private Control _lastFocusedNUD = null;
public override bool BlocksInputWhenFocused => _lastFocusedNUD?.Focused == true;
private List<VirtualPad> Pads =>
ControllerPanel.Controls
@ -112,7 +114,9 @@ namespace BizHawk.Client.EmuHawk
}
}
ControllerPanel.Controls.AddRange(padSchemata.Select(s => (Control) new VirtualPad(s, InputManager)).Reverse().ToArray());
void SetLastFocusedNUD(object sender, EventArgs args)
=> _lastFocusedNUD = (Control) sender;
ControllerPanel.Controls.AddRange(padSchemata.Select(s => (Control) new VirtualPad(s, InputManager, SetLastFocusedNUD)).Reverse().ToArray());
}
public void ScrollToPadSchema(string padSchemaName)

View File

@ -26,6 +26,7 @@ namespace BizHawk.Client.EmuHawk
public VirtualPadAnalogStick(
InputManager inputManager,
EventHandler setLastFocusedNUD,
string name,
string secondaryName,
AxisSpec rangeX,
@ -78,9 +79,15 @@ namespace BizHawk.Client.EmuHawk
manualR.Maximum = Math.Max(RectToPolarHelper(RangeX.Max, RangeY.Max).R, RectToPolarHelper(RangeX.Min, RangeY.Min).R);
ManualX.ValueChanged += ManualXY_ValueChanged;
ManualX.GotFocus += setLastFocusedNUD;
ManualY.ValueChanged += ManualXY_ValueChanged;
ManualY.GotFocus += setLastFocusedNUD;
manualR.ValueChanged += PolarNumeric_Changed;
manualR.GotFocus += setLastFocusedNUD;
manualTheta.ValueChanged += PolarNumeric_Changed;
manualTheta.GotFocus += setLastFocusedNUD;
MaxXNumeric.GotFocus += setLastFocusedNUD;
MaxYNumeric.GotFocus += setLastFocusedNUD;
AnalogStick.Init(
_inputManager.StickyXorAdapter,

View File

@ -23,6 +23,7 @@ namespace BizHawk.Client.EmuHawk
public VirtualPadTargetScreen(
StickyXorAdapter stickyXorAdapter,
EventHandler setLastFocusedNud,
string nameX,
string nameY,
int maxX,
@ -35,6 +36,9 @@ namespace BizHawk.Client.EmuHawk
MaxY = maxY;
InitializeComponent();
XNumeric.GotFocus += setLastFocusedNud;
YNumeric.GotFocus += setLastFocusedNud;
}
private void VirtualPadTargetScreen_Load(object sender, EventArgs e)