From f3cac5deff028891ec7ca5d3b8a53340514d6a76 Mon Sep 17 00:00:00 2001 From: adelikat Date: Fri, 27 Jun 2014 01:45:30 +0000 Subject: [PATCH] Virtualpads - fix readonly notion, no longer crashy when no pads are set up --- .../tools/VirtualPads/VirtualPad.cs | 19 ++++++++----------- .../tools/VirtualPads/VirtualpadsTool.cs | 16 ++++++++++++---- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.cs index 16f1280d8c..7a8f73e159 100644 --- a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.cs +++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualPad.cs @@ -15,6 +15,7 @@ namespace BizHawk.Client.EmuHawk public partial class VirtualPad : UserControl { private PadSchema _schema; + private bool _readOnly = false; private List PadControls { @@ -30,7 +31,13 @@ namespace BizHawk.Client.EmuHawk { get { - return PadControls.First().ReadOnly; // Shortcut logic, assume all controls are in sync + return _readOnly; + } + + set + { + _readOnly = value; + PadControls.ForEach(c => c.ReadOnly = value); } } @@ -99,16 +106,6 @@ namespace BizHawk.Client.EmuHawk PadControls.ForEach(p => p.Clear()); } - public void ToggleReadOnly() - { - PadControls.ForEach(p => p.ReadOnly ^= true); - } - - public void SetReadOnly(bool readOnly) - { - PadControls.ForEach(p => p.ReadOnly = readOnly); - } - public void Set(IController controller) { PadControls.ForEach(c => c.Set(controller)); diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs index c110565b5c..21efd57fec 100644 --- a/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs +++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs @@ -13,6 +13,7 @@ namespace BizHawk.Client.EmuHawk { private int _defaultWidth; private int _defaultHeight; + private bool _readOnly = false; private List Pads { @@ -24,11 +25,18 @@ namespace BizHawk.Client.EmuHawk } } - private bool Readonly + + public bool Readonly { get { - return Pads.First().ReadOnly; // Shortcut logic, assume all controls are in sync + return _readOnly; + } + + set + { + _readOnly = value; + Pads.ForEach(p => p.ReadOnly = value); } } @@ -129,12 +137,12 @@ namespace BizHawk.Client.EmuHawk if (Global.MovieSession.Movie.IsPlaying && !Global.MovieSession.Movie.IsFinished && Global.Emulator.Frame > 0) { - Pads.ForEach(p => p.SetReadOnly(true)); + Readonly = true; Pads.ForEach(p => p.Set(Global.MovieSession.CurrentInput)); } else { - Pads.ForEach(p => p.SetReadOnly(false)); + Readonly = false; } if (!Readonly && !Global.Config.VirtualPadSticky)