From fa7613d4813314ab95f6bc4a895d0b2c66b94d72 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Wed, 8 Jul 2020 02:46:18 +1000 Subject: [PATCH] Pass IMainForm props in PresentationPanel ctor instead --- .../IEmuHawkMainFormToTools.cs | 12 --------- src/BizHawk.Client.EmuHawk/MainForm.Events.cs | 6 ----- src/BizHawk.Client.EmuHawk/MainForm.cs | 16 +++++++++--- .../PresentationPanel.cs | 25 +++++++++++++------ 4 files changed, 29 insertions(+), 30 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/IEmuHawkMainFormToTools.cs b/src/BizHawk.Client.EmuHawk/IEmuHawkMainFormToTools.cs index 23d46b048d..ff4b702765 100644 --- a/src/BizHawk.Client.EmuHawk/IEmuHawkMainFormToTools.cs +++ b/src/BizHawk.Client.EmuHawk/IEmuHawkMainFormToTools.cs @@ -33,15 +33,6 @@ namespace BizHawk.Client.EmuHawk /// only referenced from bool IsTurboing { get; } - /// only referenced from - MouseEventHandler MainForm_MouseClick { get; } - - /// only referenced from - MouseEventHandler MainForm_MouseMove { get; } - - /// only referenced from - MouseEventHandler MainForm_MouseWheel { get; } - int? PauseOnFrame { get; set; } /// only referenced from @@ -102,9 +93,6 @@ namespace BizHawk.Client.EmuHawk /// only referenced from void Throttle(); - /// only referenced from - void ToggleFullscreen(bool allowSuppress = false); - /// only referenced from void TogglePause(); diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs index 6aa7b48301..aa57520da9 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -2527,12 +2527,6 @@ namespace BizHawk.Client.EmuHawk AutohideCursor(false); } - public MouseEventHandler MainForm_MouseWheel { get; } - - public MouseEventHandler MainForm_MouseMove { get; } - - public MouseEventHandler MainForm_MouseClick { get; } - private void MainForm_Resize(object sender, EventArgs e) { PresentationPanel.Resized = true; diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 36f8882764..c214d46796 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -291,7 +291,7 @@ namespace BizHawk.Client.EmuHawk PauseEmulator, SetMainformMovieInfo); - MouseClick += MainForm_MouseClick = (sender, e) => + void MainForm_MouseClick(object sender, MouseEventArgs e) { AutohideCursor(false); if (Config.ShowContextMenu && e.Button == MouseButtons.Right) @@ -299,8 +299,10 @@ namespace BizHawk.Client.EmuHawk MainFormContextMenu.Show(PointToScreen(new Point(e.X, e.Y + MainformMenu.Height))); } }; - MouseMove += MainForm_MouseMove = (sender, e) => AutohideCursor(false); - MainForm_MouseWheel = (sender, e) => MouseWheelTracker += e.Delta; + void MainForm_MouseMove(object sender, MouseEventArgs e) => AutohideCursor(false); + void MainForm_MouseWheel(object sender, MouseEventArgs e) => MouseWheelTracker += e.Delta; + MouseClick += MainForm_MouseClick; + MouseMove += MainForm_MouseMove; InitializeComponent(); Icon = Properties.Resources.logo; @@ -325,7 +327,13 @@ namespace BizHawk.Client.EmuHawk // TODO GL - a lot of disorganized wiring-up here // installed separately on Unix (via package manager or from https://developer.nvidia.com/cg-toolkit-download), look in $PATH - PresentationPanel = new PresentationPanel(this, Config, GlobalWin.GL) + PresentationPanel = new PresentationPanel( + Config, + GlobalWin.GL, + ToggleFullscreen, + MainForm_MouseClick, + MainForm_MouseMove, + MainForm_MouseWheel) { GraphicsControl = { MainWindow = true } }; diff --git a/src/BizHawk.Client.EmuHawk/PresentationPanel.cs b/src/BizHawk.Client.EmuHawk/PresentationPanel.cs index 09b63f711e..ecad764244 100644 --- a/src/BizHawk.Client.EmuHawk/PresentationPanel.cs +++ b/src/BizHawk.Client.EmuHawk/PresentationPanel.cs @@ -1,4 +1,5 @@ -using System.Drawing; +using System; +using System.Drawing; using System.Windows.Forms; using BizHawk.Client.Common; @@ -11,14 +12,22 @@ namespace BizHawk.Client.EmuHawk /// public class PresentationPanel { - private readonly IMainFormForTools _mainForm; private readonly Config _config; - public PresentationPanel(IMainFormForTools mainForm, Config config, IGL gl) + private readonly Action _fullscreenToggleCallback; + + public PresentationPanel( + Config config, + IGL gl, + Action fullscreenToggleCallback, + MouseEventHandler onClick, + MouseEventHandler onMove, + MouseEventHandler onWheel) { - _mainForm = mainForm; _config = config; + _fullscreenToggleCallback = fullscreenToggleCallback; + GraphicsControl = new GraphicsControl(gl) { Dock = DockStyle.Fill, @@ -27,10 +36,10 @@ namespace BizHawk.Client.EmuHawk // pass through these events to the form. we might need a more scalable solution for mousedown etc. for zapper and whatnot. // http://stackoverflow.com/questions/547172/pass-through-mouse-events-to-parent-control (HTTRANSPARENT) + GraphicsControl.MouseClick += onClick; GraphicsControl.MouseDoubleClick += HandleFullscreenToggle; - GraphicsControl.MouseClick += _mainForm.MainForm_MouseClick; - GraphicsControl.MouseMove += _mainForm.MainForm_MouseMove; - GraphicsControl.MouseWheel += _mainForm.MainForm_MouseWheel; + GraphicsControl.MouseMove += onMove; + GraphicsControl.MouseWheel += onWheel; } private bool _isDisposed; @@ -55,7 +64,7 @@ namespace BizHawk.Client.EmuHawk bool allowSuppress = Control.ModifierKeys != Keys.Shift; if (_config.DispChromeAllowDoubleClickFullscreen || !allowSuppress) { - _mainForm.ToggleFullscreen(allowSuppress); + _fullscreenToggleCallback(allowSuppress); } } }