diff --git a/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs b/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs
index b9c0dcff20..3e6a6e03cf 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs
@@ -243,9 +243,9 @@ namespace BizHawk.Client.EmuHawk
W.AddSamples(samples);
}
- public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
{
- return W.AcquireVideoCodecToken(hwnd, config);
+ return W.AcquireVideoCodecToken(dialogController, hwnd, config);
}
public void SetMovieParameters(int fpsNum, int fpsDen)
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs
index 83db1c841d..966649b54b 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs
@@ -261,7 +261,7 @@ namespace BizHawk.Client.EmuHawk
/// Acquires a video codec configuration from the user. you may save it for future use, but you must dispose of it when you're done with it.
/// returns null if the user canceled the dialog
///
- public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
{
var tempParams = new Parameters
{
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs
index 3656b9d1a9..9bf7db5ff5 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs
@@ -110,10 +110,10 @@ namespace BizHawk.Client.EmuHawk
}
}
- public static void Run(IWin32Window hwnd)
+ public static void Run(IDialogController dialogController, IWin32Window hwnd)
{
var form = new FFmpegDownloaderForm();
- form.ShowHawkDialog(hwnd);
+ form.ShowHawkDialog(dialogController, hwnd);
}
private void btnDownload_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs
index 5ec55c4714..68e2dea4c1 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs
@@ -207,14 +207,14 @@ namespace BizHawk.Client.EmuHawk
//ffmpeg.StandardInput.BaseStream.Write(b, 0, b.Length);
}
- public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
{
if (new FFmpegService().QueryServiceAvailable())
{
return FFmpegWriterForm.DoFFmpegWriterDlg(hwnd, config);
}
- FFmpegDownloaderForm.Run(hwnd);
+ FFmpegDownloaderForm.Run(dialogController, hwnd);
if (new FFmpegService().QueryServiceAvailable())
{
return FFmpegWriterForm.DoFFmpegWriterDlg(hwnd, config);
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs
index ddfa308043..f4c56738dd 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs
@@ -195,7 +195,7 @@ namespace BizHawk.Client.EmuHawk
// ignored
}
- public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
{
return GifWriterForm.DoTokenForm(hwnd, config);
}
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs
index 7767a84090..3d178117f5 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs
@@ -64,7 +64,7 @@ namespace BizHawk.Client.EmuHawk
///
/// hwnd to attach to if the user is shown config dialog
/// codec token, dispose of it when you're done with it
- IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config);
+ IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config);
///
/// set framerate to fpsNum/fpsDen (assumed to be unchanging over the life of the stream)
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/ImageSequenceWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/ImageSequenceWriter.cs
index 94d805249e..4829586afa 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/ImageSequenceWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/ImageSequenceWriter.cs
@@ -73,7 +73,7 @@ namespace BizHawk.Client.EmuHawk
}
}
- public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
{
return new CodecToken();
}
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs
index 09ea39dcdd..30dfd29ada 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs
@@ -529,7 +529,7 @@ namespace BizHawk.Client.EmuHawk
///
/// hwnd to attach to if the user is shown config dialog
/// codec token, dispose of it when you're done with it
- public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
{
var ret = new CodecToken();
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs
index 98b983b185..6e2048f0df 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs
@@ -29,7 +29,7 @@ namespace BizHawk.Client.EmuHawk
{
// ignored
}
- public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
{
return new NutWriterToken();
}
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs
index 1d659654db..78682ac6b7 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs
@@ -83,7 +83,7 @@ namespace BizHawk.Client.EmuHawk
}
}
- public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
{
return new DummyDisposable();
}
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs
index 8b345e2340..49c4c906fb 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs
@@ -16,12 +16,15 @@ namespace BizHawk.Client.EmuHawk
private readonly Config _config;
private readonly IGameInfo _game;
+ private readonly IDialogController _dialogController;
+
private string _mSynclessConfigFile;
private string _mFramesDirectory;
- public SynclessRecordingTools(Config config, IGameInfo game)
+ public SynclessRecordingTools(Config config, IGameInfo game, IDialogController dialogController)
{
_config = config;
+ _dialogController = dialogController;
_game = game;
InitializeComponent();
}
@@ -123,7 +126,7 @@ namespace BizHawk.Client.EmuHawk
avw.SetAudioParameters(44100, 2, 16); // hacky
avw.SetMovieParameters(60, 1); // hacky
avw.SetVideoParameters(width, height);
- var token = avw.AcquireVideoCodecToken(this, _config);
+ var token = avw.AcquireVideoCodecToken(_dialogController, this, _config);
avw.SetVideoCodecToken(token);
avw.OpenFile(sfd.FileName);
foreach (var fi in _mFrameInfos)
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/WavWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/WavWriter.cs
index 386c4b9489..72df03d872 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/WavWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/WavWriter.cs
@@ -229,7 +229,7 @@ namespace BizHawk.Client.EmuHawk
public void Dispose() { }
}
- public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
{
// don't care
return new WavWriterVToken();
diff --git a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs
index 153fc96708..73bd49dcac 100644
--- a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs
+++ b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs
@@ -148,28 +148,22 @@ namespace BizHawk.Client.EmuHawk
///
/// Handles EmuHawk specific issues before showing a modal dialog
///
- public static DialogResult ShowHawkDialog(this Form form, IWin32Window owner, Point position = default)
+ public static DialogResult ShowHawkDialog(this Form form, IDialogController dialogController, IWin32Window owner, Point position = default)
{
- Sound.Instance.StopSound();
if (position != default)
{
form.StartPosition = FormStartPosition.Manual;
form.Location = position;
}
- var result = form.ShowDialog(owner);
- Sound.Instance.StartSound();
- return result;
+ return dialogController.DoWithTempMute(() => form.ShowDialog(owner));
}
///
/// Handles EmuHawk specific issues before showing a modal dialog
///
- public static DialogResult ShowHawkDialog(this CommonDialog form, IWin32Window owner)
+ public static DialogResult ShowHawkDialog(this CommonDialog form, IDialogController dialogController, IWin32Window owner)
{
- Sound.Instance.StopSound();
- var result = form.ShowDialog(owner);
- Sound.Instance.StartSound();
- return result;
+ return dialogController.DoWithTempMute(() => form.ShowDialog(owner));
}
public static void DoWithTempMute(this IDialogController dialogController, Action action)
@@ -286,7 +280,7 @@ namespace BizHawk.Client.EmuHawk
Clipboard.SetImage(img);
}
- public static void SaveAsFile(this Bitmap bitmap, IGameInfo game, string suffix, string systemId, PathEntryCollection paths, IWin32Window owner)
+ public static void SaveAsFile(this Bitmap bitmap, IGameInfo game, string suffix, string systemId, PathEntryCollection paths, IDialogController dialogController, IWin32Window owner)
{
using var sfd = new SaveFileDialog
{
@@ -296,7 +290,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = true
};
- var result = sfd.ShowHawkDialog(owner);
+ var result = sfd.ShowHawkDialog(dialogController, owner);
if (result != DialogResult.OK)
{
return;
diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs
index 75a759b77f..0c9342c20e 100644
--- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs
+++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs
@@ -246,7 +246,7 @@ namespace BizHawk.Client.EmuHawk
private void OpenAdvancedMenuItem_Click(object sender, EventArgs e)
{
using var oac = new OpenAdvancedChooser(Config, CreateCoreComm, Game, RunLibretroCoreChooser);
- if (oac.ShowHawkDialog(this) == DialogResult.Cancel)
+ if (oac.ShowHawkDialog(this, this) == DialogResult.Cancel)
{
return;
}
@@ -295,7 +295,7 @@ namespace BizHawk.Client.EmuHawk
Title = "Open Advanced"
};
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(this, this);
if (!result.IsOk())
{
return;
@@ -444,7 +444,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = false
};
- if (ofd.ShowHawkDialog(this).IsOk())
+ if (ofd.ShowHawkDialog(this, this).IsOk())
{
foreach (var fn in ofd.FileNames)
{
@@ -471,8 +471,8 @@ namespace BizHawk.Client.EmuHawk
Config.PathEntries.MovieAbsolutePath(),
"Movie Files",
MovieSession.Movie.PreferredExtension,
- this
- );
+ this,
+ this);
if (file != null)
{
@@ -540,7 +540,7 @@ namespace BizHawk.Client.EmuHawk
private void SynclessRecordingMenuItem_Click(object sender, EventArgs e)
{
- new SynclessRecordingTools(Config, Game).Run();
+ new SynclessRecordingTools(Config, Game, this).Run();
}
private void CaptureOSDMenuItem_Click(object sender, EventArgs e)
@@ -564,7 +564,7 @@ namespace BizHawk.Client.EmuHawk
Filter = FilesystemFilter.PNGs.ToString()
};
- if (sfd.ShowHawkDialog(this).IsOk())
+ if (sfd.ShowHawkDialog(this, this).IsOk())
{
TakeScreenshot(sfd.FileName);
}
@@ -1130,7 +1130,7 @@ namespace BizHawk.Client.EmuHawk
Filter = ConfigFileFSFilterString
};
- if (sfd.ShowHawkDialog(this).IsOk())
+ if (sfd.ShowHawkDialog(this, this).IsOk())
{
SaveConfig(sfd.FileName);
AddOnScreenMessage("Copied settings");
@@ -1152,7 +1152,7 @@ namespace BizHawk.Client.EmuHawk
Filter = ConfigFileFSFilterString
};
- if (ofd.ShowHawkDialog(this).IsOk())
+ if (ofd.ShowHawkDialog(this, this).IsOk())
{
LoadConfigFile(ofd.FileName);
}
@@ -1385,12 +1385,12 @@ namespace BizHawk.Client.EmuHawk
if (Emulator is NES nes && nes.IsVS)
{
using var form = new NesVsSettings(this, nes.GetSyncSettings().Clone());
- form.ShowHawkDialog(this);
+ form.ShowHawkDialog(this, this);
}
else if (Emulator is SubNESHawk sub && sub.IsVs)
{
using var form = new NesVsSettings(this, sub.GetSyncSettings().Clone());
- form.ShowHawkDialog(this);
+ form.ShowHawkDialog(this, this);
}
}
diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs
index 82929cd4fd..8244e17b31 100644
--- a/src/BizHawk.Client.EmuHawk/MainForm.cs
+++ b/src/BizHawk.Client.EmuHawk/MainForm.cs
@@ -2258,7 +2258,7 @@ namespace BizHawk.Client.EmuHawk
FilterIndex = _lastOpenRomFilter
};
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(this, this);
if (result != DialogResult.OK)
{
return;
@@ -3221,7 +3221,7 @@ namespace BizHawk.Client.EmuHawk
aw.SetDefaultVideoCodecToken(Config);
}
- var token = aw.AcquireVideoCodecToken(this, Config);
+ var token = aw.AcquireVideoCodecToken(this, this, Config);
if (token == null)
{
AddOnScreenMessage("A/V capture canceled.");
@@ -3270,7 +3270,7 @@ namespace BizHawk.Client.EmuHawk
sfd.Filter = new FilesystemFilterSet(new FilesystemFilter(ext, new[] { ext })).ToString();
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(this, this);
if (result == DialogResult.Cancel)
{
aw.Dispose();
@@ -4257,7 +4257,7 @@ namespace BizHawk.Client.EmuHawk
FileName = $"{SaveStatePrefix()}.QuickSave0.State"
};
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(this, this);
if (result == DialogResult.OK)
{
SaveState(sfd.FileName, sfd.FileName);
@@ -4289,7 +4289,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = true
};
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(this, this);
if (result != DialogResult.OK)
{
return;
diff --git a/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs b/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs
index e38478b4c0..c60153bf22 100644
--- a/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs
+++ b/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs
@@ -513,7 +513,7 @@ namespace BizHawk.Client.EmuHawk
InitialDirectory = _config.PathEntries.MovieAbsolutePath()
};
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(_mainForm, this);
if (result == DialogResult.OK)
{
var file = new FileInfo(ofd.FileName);
diff --git a/src/BizHawk.Client.EmuHawk/movie/RecordMovie.cs b/src/BizHawk.Client.EmuHawk/movie/RecordMovie.cs
index 6e0daf9d9c..76f47a0beb 100644
--- a/src/BizHawk.Client.EmuHawk/movie/RecordMovie.cs
+++ b/src/BizHawk.Client.EmuHawk/movie/RecordMovie.cs
@@ -194,7 +194,7 @@ namespace BizHawk.Client.EmuHawk
Filter = new FilesystemFilterSet(new FilesystemFilter("Movie Files", new[] { preferredExt })).ToString()
};
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(_mainForm, this);
if (result == DialogResult.OK
&& !string.IsNullOrWhiteSpace(sfd.FileName))
{
diff --git a/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs b/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs
index 803cb8fadc..1c21761f7b 100644
--- a/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs
@@ -366,11 +366,12 @@ namespace BizHawk.Client.EmuHawk
}
var file = SaveFileDialog(
- fileName,
- Config.PathEntries.ToolsAbsolutePath(),
- "Bot files",
- "bot",
- this);
+ fileName,
+ Config.PathEntries.ToolsAbsolutePath(),
+ "Bot files",
+ "bot",
+ MainForm,
+ this);
if (file != null)
{
diff --git a/src/BizHawk.Client.EmuHawk/tools/CDL.cs b/src/BizHawk.Client.EmuHawk/tools/CDL.cs
index b2fd8343c7..f7ab719481 100644
--- a/src/BizHawk.Client.EmuHawk/tools/CDL.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/CDL.cs
@@ -392,6 +392,7 @@ namespace BizHawk.Client.EmuHawk
Config.PathEntries.LogAbsolutePath(),
"Code Data Logger Files",
"cdl",
+ MainForm,
this);
if (file == null)
diff --git a/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs b/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs
index e7fe4d7897..48bdc8907c 100644
--- a/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs
@@ -150,6 +150,7 @@ namespace BizHawk.Client.EmuHawk
Config.PathEntries.CheatsAbsolutePath(Game.System),
"Cheat Files",
"cht",
+ MainForm,
Owner ?? this);
return file != null && MainForm.CheatList.SaveFile(file.FullName);
diff --git a/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs b/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs
index 3471a3d019..19e9b7d4fd 100644
--- a/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs
@@ -144,7 +144,7 @@ namespace BizHawk.Client.EmuHawk
{
var b = CreateAddBreakpointDialog(BreakpointOperation.Add);
- if (b.ShowHawkDialog(this).IsOk())
+ if (b.ShowHawkDialog(MainForm, this).IsOk())
{
_breakpoints.Add(Core, MemoryDomains.SystemBus.Name, b.Address, b.AddressMask, b.BreakType);
}
@@ -265,7 +265,7 @@ namespace BizHawk.Client.EmuHawk
{
var b = CreateAddBreakpointDialog(BreakpointOperation.Duplicate, breakpoint.Type, breakpoint.Address, breakpoint.AddressMask);
- if (b.ShowHawkDialog(this) == DialogResult.OK)
+ if (b.ShowHawkDialog(MainForm, this) == DialogResult.OK)
{
_breakpoints.Add(new Breakpoint(Core, MemoryDomains.SystemBus.Name, breakpoint.Callback, b.Address, b.AddressMask, b.BreakType, breakpoint.Active));
}
@@ -284,7 +284,7 @@ namespace BizHawk.Client.EmuHawk
{
var b = CreateAddBreakpointDialog(BreakpointOperation.Edit, breakpoint.Type, breakpoint.Address, breakpoint.AddressMask);
- if (b.ShowHawkDialog(this) == DialogResult.OK)
+ if (b.ShowHawkDialog(MainForm, this) == DialogResult.OK)
{
breakpoint.Type = b.BreakType;
breakpoint.Address = b.Address;
diff --git a/src/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs b/src/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs
index 009a2944f5..5a22914c0a 100644
--- a/src/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs
@@ -1022,7 +1022,7 @@ namespace BizHawk.Client.EmuHawk
Color = Spriteback
};
- var result = dlg.ShowHawkDialog(this);
+ var result = dlg.ShowHawkDialog(MainForm, this);
if (result.IsOk())
{
Spriteback = dlg.Color;
diff --git a/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs b/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs
index 5204b3a2e0..f24eb23d50 100644
--- a/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs
@@ -187,7 +187,7 @@ namespace BizHawk.Client.EmuHawk
g.Flush();
}
- toSave.Bmp.SaveAsFile(Game, "Print", Emulator.SystemId, Config.PathEntries, this);
+ toSave.Bmp.SaveAsFile(Game, "Print", Emulator.SystemId, Config.PathEntries, MainForm, this);
}
private void CopyToolStripMenuItem_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/tools/Genesis/VDPViewer.cs b/src/BizHawk.Client.EmuHawk/tools/Genesis/VDPViewer.cs
index 6a76e88285..797cb20897 100644
--- a/src/BizHawk.Client.EmuHawk/tools/Genesis/VDPViewer.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/Genesis/VDPViewer.cs
@@ -179,7 +179,7 @@ namespace BizHawk.Client.EmuHawk
private void SaveAsFile(Bitmap bitmap, string suffix)
{
- bitmap.SaveAsFile(Game, suffix, Emu.SystemId, Config.PathEntries, this);
+ bitmap.SaveAsFile(Game, suffix, Emu.SystemId, Config.PathEntries, MainForm, this);
}
private void SaveBGAScreenshotToolStripMenuItem_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs
index 41e4b6d003..19c2e4142f 100644
--- a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs
@@ -946,7 +946,7 @@ namespace BizHawk.Client.EmuHawk
: Game.FilesystemSafeName()
};
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(MainForm, this);
return result == DialogResult.OK ? sfd.FileName : "";
}
@@ -962,7 +962,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = true
};
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(MainForm, this);
return result == DialogResult.OK ? sfd.FileName : "";
}
@@ -1284,7 +1284,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = true
};
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(MainForm, this);
if (result != DialogResult.OK)
{
return;
@@ -1338,7 +1338,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = false
};
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(MainForm, this);
if (result == DialogResult.OK)
{
@@ -1605,7 +1605,7 @@ namespace BizHawk.Client.EmuHawk
Message = "Enter a hexadecimal value"
};
- var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog(this));
+ var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog(MainForm, this));
if (result == DialogResult.OK && inputPrompt.PromptText.IsHex())
{
@@ -1694,7 +1694,7 @@ namespace BizHawk.Client.EmuHawk
ParentTool = this
};
- poke.ShowHawkDialog(this);
+ poke.ShowHawkDialog(MainForm, this);
GeneralUpdate();
}
}
@@ -1702,7 +1702,7 @@ namespace BizHawk.Client.EmuHawk
private void SetColorsMenuItem_Click(object sender, EventArgs e)
{
using var form = new HexColorsForm(this);
- form.ShowHawkDialog(this);
+ form.ShowHawkDialog(MainForm, this);
}
private void ResetColorsToDefaultMenuItem_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
index 2663b03e8f..7b305fcb43 100644
--- a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
@@ -696,7 +696,7 @@ namespace BizHawk.Client.EmuHawk
sfd.Filter = SessionsFSFilterSet.ToString();
sfd.RestoreDirectory = true;
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(MainForm, this);
return result.IsOk() ? new FileInfo(sfd.FileName) : null;
}
@@ -826,7 +826,7 @@ namespace BizHawk.Client.EmuHawk
Directory.CreateDirectory(ofd.InitialDirectory);
}
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(MainForm, this);
if (result.IsOk() && !string.IsNullOrWhiteSpace(ofd.FileName))
{
LoadLuaSession(ofd.FileName);
@@ -880,7 +880,7 @@ namespace BizHawk.Client.EmuHawk
Filter = new FilesystemFilterSet(FilesystemFilter.LuaScripts).ToString()
};
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(MainForm, this);
if (result.IsOk() && !string.IsNullOrWhiteSpace(sfd.FileName))
{
string defaultTemplate = "while true do\n\temu.frameadvance();\nend";
@@ -912,7 +912,7 @@ namespace BizHawk.Client.EmuHawk
Directory.CreateDirectory(ofd.InitialDirectory);
}
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(MainForm, this);
if (result.IsOk() && ofd.FileNames != null)
{
foreach (var file in ofd.FileNames)
diff --git a/src/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs b/src/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs
index 442f1c1762..9801879bd0 100644
--- a/src/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs
@@ -279,7 +279,7 @@ namespace BizHawk.Client.EmuHawk
create = true;
}
- DialogResult result = dialog.ShowHawkDialog(this);
+ DialogResult result = dialog.ShowHawkDialog(MainForm, this);
if (result != DialogResult.OK)
{
if (create)
@@ -304,7 +304,7 @@ namespace BizHawk.Client.EmuHawk
Filter = MacrosFSFilterSet.ToString()
};
- DialogResult result = dialog.ShowHawkDialog(this);
+ DialogResult result = dialog.ShowHawkDialog(MainForm, this);
if (result != DialogResult.OK)
{
return null;
diff --git a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs
index a0fc9991fa..7ecbb38d70 100644
--- a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs
@@ -127,7 +127,7 @@ namespace BizHawk.Client.EmuHawk
Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top
};
- var mdf = new MultiDiskFileSelector(this, () => MainForm.CurrentlyOpenRom)
+ var mdf = new MultiDiskFileSelector(this, MainForm, () => MainForm.CurrentlyOpenRom)
{
Location = UIHelper.Scale(new Point(7, 12)),
Width = groupBox.ClientSize.Width - UIHelper.ScaleX(13),
@@ -262,7 +262,7 @@ namespace BizHawk.Client.EmuHawk
Filter = new FilesystemFilterSet(new FilesystemFilter("XML Files", new[] { "xml" })).ToString()
};
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(MainForm, this);
if (result != DialogResult.Cancel)
{
NameBox.Text = sfd.FileName;
diff --git a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs
index b4d5c20c40..3dfd0f06b5 100644
--- a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs
@@ -9,6 +9,8 @@ namespace BizHawk.Client.EmuHawk
{
public partial class MultiDiskFileSelector : UserControl
{
+ private readonly IDialogController _dialogController;
+
private readonly Func _getLoadedRomNameCallback;
private readonly ToolFormBase _parent;
@@ -28,8 +30,9 @@ namespace BizHawk.Client.EmuHawk
OnNameChanged(EventArgs.Empty);
}
- public MultiDiskFileSelector(ToolFormBase parent, Func getLoadedRomNameCallback)
+ public MultiDiskFileSelector(ToolFormBase parent, IDialogController dialogController, Func getLoadedRomNameCallback)
{
+ _dialogController = dialogController;
_getLoadedRomNameCallback = getLoadedRomNameCallback;
_parent = parent;
InitializeComponent();
@@ -76,7 +79,7 @@ namespace BizHawk.Client.EmuHawk
};
string hawkPath = "";
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(_dialogController, this);
if (result == DialogResult.OK)
{
hawkPath = ofd.FileName;
diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs b/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs
index b25c911068..9ab38fd02b 100644
--- a/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs
@@ -188,7 +188,7 @@ namespace BizHawk.Client.EmuHawk
{
NameTableView
.ToBitMap()
- .SaveAsFile(Game, "Nametables", "NES", Config.PathEntries, this);
+ .SaveAsFile(Game, "Nametables", "NES", Config.PathEntries, MainForm, this);
}
private void ScreenshotToClipboardMenuItem_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs b/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs
index 69a0beaa95..8fe8601e25 100644
--- a/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs
@@ -314,7 +314,7 @@ namespace BizHawk.Client.EmuHawk
private void Screenshot(Bitmap b, string suffix)
{
- b.SaveAsFile(Game, suffix, "NES", Config.PathEntries, this);
+ b.SaveAsFile(Game, suffix, "NES", Config.PathEntries, MainForm, this);
}
private void SavePaletteScreenshotMenuItem_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/tools/PCE/PCETileViewer.cs b/src/BizHawk.Client.EmuHawk/tools/PCE/PCETileViewer.cs
index 54864df77a..660ff0d1e2 100644
--- a/src/BizHawk.Client.EmuHawk/tools/PCE/PCETileViewer.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/PCE/PCETileViewer.cs
@@ -204,7 +204,7 @@ namespace BizHawk.Client.EmuHawk
private void SaveAsFile(Bitmap bmp, string suffix)
{
- bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, this);
+ bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, MainForm, this);
}
private void SaveBackgroundScreenshotMenuItem_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs b/src/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs
index c973de6521..3bf78b6cdd 100644
--- a/src/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs
@@ -197,7 +197,7 @@ namespace BizHawk.Client.EmuHawk
private void SaveAsFile(Bitmap bmp, string suffix)
{
- bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, this);
+ bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, MainForm, this);
}
private void SaveTilesScreenshotToolStripMenuItem_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs
index fb97e19920..c336f06ca3 100644
--- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs
@@ -577,7 +577,7 @@ namespace BizHawk.Client.EmuHawk
var point = Cursor.Position;
point.Offset(i.Width / -2, i.Height / -2);
- var result = MainForm.DoWithTempMute(() => i.ShowHawkDialog(this, position: point));
+ var result = MainForm.DoWithTempMute(() => i.ShowHawkDialog(Tastudio.MainForm, this, position: point));
if (result.IsOk())
{
branch.UserText = i.PromptText;
diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs
index ece06ba438..4719a62ed7 100644
--- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs
@@ -196,7 +196,7 @@ namespace BizHawk.Client.EmuHawk
var point = Cursor.Position;
point.Offset(i.Width / -2, i.Height / -2);
- var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(this, position: point));
+ var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(Tastudio.MainForm, this, position: point));
if (!result.IsOk())
{
return;
@@ -251,7 +251,7 @@ namespace BizHawk.Client.EmuHawk
point.Offset(i.Width / -2, i.Height / -2);
}
- var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(this, position: point));
+ var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(Tastudio.MainForm, this, position: point));
if (result == DialogResult.OK)
{
diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs
index 966d1177c5..8cdeae1d3b 100644
--- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs
@@ -108,7 +108,7 @@ namespace BizHawk.Client.EmuHawk
).ToString()
};
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(MainForm, this);
if (result.IsOk())
{
LoadMovieFile(ofd.FileName, false);
diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs
index ac8f4854d8..5b9751a8c0 100644
--- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs
@@ -826,6 +826,7 @@ namespace BizHawk.Client.EmuHawk
Config.PathEntries.MovieAbsolutePath(),
"Tas Project Files",
"tasproj",
+ MainForm,
this
);
diff --git a/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs b/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs
index ed1af1af22..0e4b322943 100644
--- a/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs
@@ -71,7 +71,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = true
};
- var result = ofd.ShowHawkDialog(this);
+ var result = ofd.ShowHawkDialog(MainForm, this);
if (result != DialogResult.OK)
{
return null;
@@ -80,7 +80,7 @@ namespace BizHawk.Client.EmuHawk
return new FileInfo(ofd.FileName);
}
- public static FileInfo SaveFileDialog(string currentFile, string path, string fileType, string fileExt, IWin32Window owner)
+ public static FileInfo SaveFileDialog(string currentFile, string path, string fileType, string fileExt, IDialogController dialogController, IWin32Window owner)
{
if (!Directory.Exists(path))
{
@@ -95,7 +95,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = true
};
- var result = sfd.ShowHawkDialog(owner);
+ var result = sfd.ShowHawkDialog(dialogController, owner);
if (result != DialogResult.OK)
{
return null;
@@ -111,7 +111,7 @@ namespace BizHawk.Client.EmuHawk
public FileInfo GetWatchSaveFileFromUser(string currentFile)
{
- return SaveFileDialog(currentFile, Config.PathEntries.WatchAbsolutePath(), "Watch Files", "wch", this);
+ return SaveFileDialog(currentFile, Config.PathEntries.WatchAbsolutePath(), "Watch Files", "wch", MainForm, this);
}
public void ViewInHexEditor(MemoryDomain domain, IEnumerable addresses, WatchSize size)
diff --git a/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs b/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs
index 7f3ac79278..fdca5a53fd 100644
--- a/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs
@@ -302,7 +302,7 @@ namespace BizHawk.Client.EmuHawk
FilesystemFilter.TextFiles
).ToString();
sfd.RestoreDirectory = true;
- var result = sfd.ShowHawkDialog(this);
+ var result = sfd.ShowHawkDialog(MainForm, this);
return result.IsOk() ? new FileInfo(sfd.FileName) : null;
}
@@ -351,7 +351,7 @@ namespace BizHawk.Client.EmuHawk
InitialValue = MaxLines.ToString()
};
- var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(this));
+ var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(MainForm, this));
if (result == DialogResult.OK)
{
var max = int.Parse(prompt.PromptText);
@@ -372,7 +372,7 @@ namespace BizHawk.Client.EmuHawk
InitialValue = FileSizeCap.ToString()
};
- var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(this));
+ var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(MainForm, this));
if (result == DialogResult.OK)
{
FileSizeCap = int.Parse(prompt.PromptText);
diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs
index e92691d5a9..da4b409784 100644
--- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs
@@ -868,7 +868,7 @@ namespace BizHawk.Client.EmuHawk
InitialLocation = this.ChildPointToScreen(WatchListView)
};
- poke.ShowHawkDialog(this);
+ poke.ShowHawkDialog(MainForm, this);
UpdateList();
}
}
@@ -898,7 +898,7 @@ namespace BizHawk.Client.EmuHawk
Message = "Enter a hexadecimal value"
};
- var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(this));
+ var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(MainForm, this));
while (result.IsOk())
{
try
diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs
index 69ae3f4c75..6a6175d3fd 100644
--- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs
@@ -395,7 +395,7 @@ namespace BizHawk.Client.EmuHawk
we.SetWatch(SelectedWatches.First().Domain, SelectedWatches, duplicate ? WatchEditor.Mode.Duplicate : WatchEditor.Mode.Edit);
- var result = we.ShowHawkDialog(this);
+ var result = we.ShowHawkDialog(MainForm, this);
if (result == DialogResult.OK)
{
if (duplicate)
@@ -426,7 +426,7 @@ namespace BizHawk.Client.EmuHawk
TextInputType = InputPrompt.InputType.Text
};
- var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog(this));
+ var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog(MainForm, this));
if (result == DialogResult.OK)
{
@@ -732,7 +732,7 @@ namespace BizHawk.Client.EmuHawk
MemoryDomains = MemoryDomains
};
we.SetWatch(CurrentDomain);
- we.ShowHawkDialog(this);
+ we.ShowHawkDialog(MainForm, this);
if (we.DialogResult == DialogResult.OK)
{
_watches.Add(we.Watches[0]);
@@ -779,7 +779,7 @@ namespace BizHawk.Client.EmuHawk
InitialLocation = this.ChildPointToScreen(WatchListView)
};
- if (poke.ShowHawkDialog(this).IsOk())
+ if (poke.ShowHawkDialog(MainForm, this).IsOk())
{
GeneralUpdate();
}