Hack in fix for #3087 (hotkeys triggering accidentally in Virtual Pad)
This commit is contained in:
parent
c0056123cd
commit
75e9ad0a40
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue