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);
+ }
}
}