From 8e72dddd411d752f687c222c7df5baa7504350bb Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Mon, 17 Aug 2020 02:51:39 +1000 Subject: [PATCH] Set menu de/activate handlers on tool form MenuStrips (fixes #2281) these call methods on MainForm, which decides whether or not to pause/unpause --- .../IEmuHawkMainFormToTools.cs | 4 ++++ src/BizHawk.Client.EmuHawk/MainForm.Events.cs | 9 ++++++++- src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs | 13 ++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/IEmuHawkMainFormToTools.cs b/src/BizHawk.Client.EmuHawk/IEmuHawkMainFormToTools.cs index ff4b702765..124fb3273e 100644 --- a/src/BizHawk.Client.EmuHawk/IEmuHawkMainFormToTools.cs +++ b/src/BizHawk.Client.EmuHawk/IEmuHawkMainFormToTools.cs @@ -69,6 +69,10 @@ namespace BizHawk.Client.EmuHawk /// only referenced from BitmapBuffer MakeScreenshotImage(); + void MaybePauseFromMenuOpened(); + + void MaybeUnpauseFromMenuClosed(); + void PauseEmulator(); /// only referenced from diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs index 19cfc5e066..5d7e73c3ea 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -2554,6 +2554,11 @@ namespace BizHawk.Client.EmuHawk private void MainformMenu_MenuActivate(object sender, EventArgs e) { HandlePlatformMenus(); + MaybePauseFromMenuOpened(); + } + + public void MaybePauseFromMenuOpened() + { if (Config.PauseWhenMenuActivated) { _wasPaused = EmulatorPaused; @@ -2562,7 +2567,9 @@ namespace BizHawk.Client.EmuHawk } } - private void MainformMenu_MenuDeactivate(object sender, EventArgs e) + private void MainformMenu_MenuDeactivate(object sender, EventArgs e) => MaybeUnpauseFromMenuClosed(); + + public void MaybeUnpauseFromMenuClosed() { if (!_wasPaused) { diff --git a/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs b/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs index 5e66a22448..bdcab0c0b6 100644 --- a/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs +++ b/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Drawing; using System.IO; using System.Windows.Forms; @@ -130,5 +131,15 @@ namespace BizHawk.Client.EmuHawk { return Tools.IsOnScreen(topLeft); } + + protected override void OnLoad(EventArgs e) + { + if (MainMenuStrip != null) + { + MainMenuStrip.MenuActivate += (sender, args) => MainForm.MaybePauseFromMenuOpened(); + MainMenuStrip.MenuDeactivate += (sender, args) => MainForm.MaybeUnpauseFromMenuClosed(); + } + base.OnLoad(e); + } } }