diff --git a/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs b/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs
index 3e6a6e03cf..4b93be4827 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(IDialogController dialogController, IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogParent parent, Config config)
{
- return W.AcquireVideoCodecToken(dialogController, hwnd, config);
+ return W.AcquireVideoCodecToken(parent, 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 966649b54b..516ec2dfc7 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(IDialogController dialogController, IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogParent parent, Config config)
{
var tempParams = new Parameters
{
@@ -278,7 +278,7 @@ namespace BizHawk.Client.EmuHawk
File.Delete(tempfile);
tempfile = Path.ChangeExtension(tempfile, "avi");
temp.OpenFile(tempfile, tempParams, null);
- var ret = temp.AcquireVideoCodecToken(hwnd.Handle, _currVideoCodecToken);
+ var ret = temp.AcquireVideoCodecToken(parent.SelfAsHandle.Handle, _currVideoCodecToken);
CodecToken token = (CodecToken)ret;
config.AviCodecToken = token?.Serialize();
temp.CloseFile();
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs
index 6bd88d69df..ff7ca5bbd9 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(IDialogController dialogController, IWin32Window hwnd)
+ public static void Run(IDialogParent parent)
{
var form = new FFmpegDownloaderForm();
- dialogController.DoWithTempMute(() => form.ShowDialog(hwnd));
+ parent.DialogController.DoWithTempMute(() => form.ShowDialog(parent.SelfAsHandle));
}
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 68e2dea4c1..655c63712e 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs
@@ -207,17 +207,17 @@ namespace BizHawk.Client.EmuHawk
//ffmpeg.StandardInput.BaseStream.Write(b, 0, b.Length);
}
- public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogParent parent, Config config)
{
if (new FFmpegService().QueryServiceAvailable())
{
- return FFmpegWriterForm.DoFFmpegWriterDlg(hwnd, config);
+ return FFmpegWriterForm.DoFFmpegWriterDlg(parent.SelfAsHandle, config);
}
- FFmpegDownloaderForm.Run(dialogController, hwnd);
+ FFmpegDownloaderForm.Run(parent);
if (new FFmpegService().QueryServiceAvailable())
{
- return FFmpegWriterForm.DoFFmpegWriterDlg(hwnd, config);
+ return FFmpegWriterForm.DoFFmpegWriterDlg(parent.SelfAsHandle, config);
}
return null;
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs
index f4c56738dd..594d4753e6 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs
@@ -195,9 +195,9 @@ namespace BizHawk.Client.EmuHawk
// ignored
}
- public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogParent parent, Config config)
{
- return GifWriterForm.DoTokenForm(hwnd, config);
+ return GifWriterForm.DoTokenForm(parent.SelfAsHandle, config);
}
private void CalcDelay()
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs
index 3d178117f5..6059f80fbc 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs
@@ -62,9 +62,9 @@ namespace BizHawk.Client.EmuHawk
/// obtain a set of recording compression parameters
/// return null on user cancel
///
- /// hwnd to attach to if the user is shown config dialog
+ /// parent for if the user is shown config dialog
/// codec token, dispose of it when you're done with it
- IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config);
+ IDisposable AcquireVideoCodecToken(IDialogParent parent, 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 4829586afa..943232f125 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(IDialogController dialogController, IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogParent parent, Config config)
{
return new CodecToken();
}
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs
index 30dfd29ada..6f2ae5d10e 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs
@@ -524,12 +524,7 @@ namespace BizHawk.Client.EmuHawk
}
}
- ///
- /// obtain a set of recording compression parameters
- ///
- /// 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(IDialogController dialogController, IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogParent parent, Config config)
{
var ret = new CodecToken();
@@ -538,7 +533,7 @@ namespace BizHawk.Client.EmuHawk
int c = Math.Min(Math.Max(config.JmdCompression, Deflater.NO_COMPRESSION), Deflater.BEST_COMPRESSION);
- if (!JmdForm.DoCompressionDlg(ref t, ref c, 1, 6, Deflater.NO_COMPRESSION, Deflater.BEST_COMPRESSION, hwnd))
+ if (!JmdForm.DoCompressionDlg(ref t, ref c, 1, 6, Deflater.NO_COMPRESSION, Deflater.BEST_COMPRESSION, parent.SelfAsHandle))
return null;
config.JmdThreads = ret.NumThreads = t;
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs
index 6e2048f0df..7140bb8378 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(IDialogController dialogController, IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogParent parent, Config config)
{
return new NutWriterToken();
}
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs
index 78682ac6b7..22103f7e29 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(IDialogController dialogController, IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogParent parent, Config config)
{
return new DummyDisposable();
}
diff --git a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs
index 49c4c906fb..d35a4fb5d9 100644
--- a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs
+++ b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs
@@ -10,21 +10,23 @@ using BizHawk.Emulation.Common;
namespace BizHawk.Client.EmuHawk
{
- public partial class SynclessRecordingTools : Form
+ public partial class SynclessRecordingTools : Form, IDialogParent
{
private readonly List _mFrameInfos = new List();
private readonly Config _config;
private readonly IGameInfo _game;
- private readonly IDialogController _dialogController;
-
private string _mSynclessConfigFile;
private string _mFramesDirectory;
+ public IDialogController DialogController { get; }
+
+ public IWin32Window SelfAsHandle => this;
+
public SynclessRecordingTools(Config config, IGameInfo game, IDialogController dialogController)
{
_config = config;
- _dialogController = dialogController;
+ DialogController = dialogController;
_game = game;
InitializeComponent();
}
@@ -126,7 +128,7 @@ namespace BizHawk.Client.EmuHawk
avw.SetAudioParameters(44100, 2, 16); // hacky
avw.SetMovieParameters(60, 1); // hacky
avw.SetVideoParameters(width, height);
- var token = avw.AcquireVideoCodecToken(_dialogController, this, _config);
+ var token = avw.AcquireVideoCodecToken(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 72df03d872..9be371a0aa 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(IDialogController dialogController, IWin32Window hwnd, Config config)
+ public IDisposable AcquireVideoCodecToken(IDialogParent parent, 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 b0d37906ab..58d49da574 100644
--- a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs
+++ b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs
@@ -259,7 +259,7 @@ namespace BizHawk.Client.EmuHawk
Clipboard.SetImage(img);
}
- public static void SaveAsFile(this Bitmap bitmap, IGameInfo game, string suffix, string systemId, PathEntryCollection paths, IDialogController dialogController, IWin32Window owner)
+ public static void SaveAsFile(this Bitmap bitmap, IGameInfo game, string suffix, string systemId, PathEntryCollection paths, IDialogParent parent)
{
using var sfd = new SaveFileDialog
{
@@ -269,7 +269,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = true
};
- var result = dialogController.DoWithTempMute(() => sfd.ShowDialog(owner));
+ var result = parent.DialogController.DoWithTempMute(() => sfd.ShowDialog(parent.SelfAsHandle));
if (result != DialogResult.OK)
{
return;
diff --git a/src/BizHawk.Client.EmuHawk/IDialogParent.cs b/src/BizHawk.Client.EmuHawk/IDialogParent.cs
new file mode 100644
index 0000000000..3ad302069d
--- /dev/null
+++ b/src/BizHawk.Client.EmuHawk/IDialogParent.cs
@@ -0,0 +1,13 @@
+#nullable enable
+
+using System.Windows.Forms;
+
+namespace BizHawk.Client.EmuHawk
+{
+ public interface IDialogParent
+ {
+ IDialogController DialogController { get; }
+
+ IWin32Window SelfAsHandle { get; }
+ }
+}
diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs
index e965a033bf..eafa750722 100644
--- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs
+++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs
@@ -471,7 +471,6 @@ namespace BizHawk.Client.EmuHawk
Config.PathEntries.MovieAbsolutePath(),
"Movie Files",
MovieSession.Movie.PreferredExtension,
- this,
this);
if (file != null)
diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs
index 2222366935..6127d64212 100644
--- a/src/BizHawk.Client.EmuHawk/MainForm.cs
+++ b/src/BizHawk.Client.EmuHawk/MainForm.cs
@@ -39,7 +39,7 @@ using BizHawk.Emulation.Cores.Consoles.Nintendo.Faust;
namespace BizHawk.Client.EmuHawk
{
- public partial class MainForm : FormBase, IMainFormForApi, IMainFormForConfig, IMainFormForTools
+ public partial class MainForm : FormBase, IDialogParent, IMainFormForApi, IMainFormForConfig, IMainFormForTools
{
/// AppliesTo[0] is used as the group label, and Config.PreferredCores[AppliesTo[0]] determines the currently selected option
private static readonly IReadOnlyCollection<(string[] AppliesTo, string[] CoreNames)> CoreData = new List<(string[], string[])> {
@@ -3221,7 +3221,7 @@ namespace BizHawk.Client.EmuHawk
aw.SetDefaultVideoCodecToken(Config);
}
- var token = aw.AcquireVideoCodecToken(this, this, Config);
+ var token = aw.AcquireVideoCodecToken(this, Config);
if (token == null)
{
AddOnScreenMessage("A/V capture canceled.");
@@ -4491,6 +4491,10 @@ namespace BizHawk.Client.EmuHawk
return isRewinding;
}
+ public IDialogController DialogController => this;
+
+ public IWin32Window SelfAsHandle => this;
+
public DialogResult ShowDialogAsChild(Form dialog) => dialog.ShowDialog(this);
public void StartSound() => Sound.StartSound();
diff --git a/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs b/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs
index 1c21761f7b..398d25e427 100644
--- a/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs
@@ -370,7 +370,6 @@ namespace BizHawk.Client.EmuHawk
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 f7ab719481..b2fd8343c7 100644
--- a/src/BizHawk.Client.EmuHawk/tools/CDL.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/CDL.cs
@@ -392,7 +392,6 @@ 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 48bdc8907c..8cdf9c79af 100644
--- a/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs
@@ -29,6 +29,8 @@ namespace BizHawk.Client.EmuHawk
private string _sortedColumn;
private bool _sortReverse;
+ public override IWin32Window SelfAsHandle => Owner ?? this; //TODO necessary? --yoshi
+
protected override string WindowTitleStatic => "Cheats";
public Cheats()
@@ -150,8 +152,7 @@ namespace BizHawk.Client.EmuHawk
Config.PathEntries.CheatsAbsolutePath(Game.System),
"Cheat Files",
"cht",
- MainForm,
- Owner ?? this);
+ this);
return file != null && MainForm.CheatList.SaveFile(file.FullName);
}
diff --git a/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs b/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs
index f24eb23d50..5204b3a2e0 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, MainForm, this);
+ toSave.Bmp.SaveAsFile(Game, "Print", Emulator.SystemId, Config.PathEntries, 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 797cb20897..6a76e88285 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, MainForm, this);
+ bitmap.SaveAsFile(Game, suffix, Emu.SystemId, Config.PathEntries, this);
}
private void SaveBGAScreenshotToolStripMenuItem_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs b/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs
index 9ab38fd02b..b25c911068 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, MainForm, this);
+ .SaveAsFile(Game, "Nametables", "NES", Config.PathEntries, 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 8fe8601e25..69a0beaa95 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, MainForm, this);
+ b.SaveAsFile(Game, suffix, "NES", Config.PathEntries, 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 660ff0d1e2..54864df77a 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, MainForm, this);
+ bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, 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 3bf78b6cdd..c973de6521 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, MainForm, this);
+ bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, this);
}
private void SaveTilesScreenshotToolStripMenuItem_Click(object sender, EventArgs e)
diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs
index 5b9751a8c0..ac8f4854d8 100644
--- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs
@@ -826,7 +826,6 @@ 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 b91ce5be55..f8b5fb6dd6 100644
--- a/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs
+++ b/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs
@@ -8,7 +8,7 @@ using BizHawk.Emulation.Common;
namespace BizHawk.Client.EmuHawk
{
- public class ToolFormBase : FormBase, IToolForm
+ public class ToolFormBase : FormBase, IToolForm, IDialogParent
{
public ToolManager Tools { protected get; set; }
@@ -22,6 +22,10 @@ namespace BizHawk.Client.EmuHawk
public IGameInfo Game { protected get; set; }
+ public IDialogController DialogController => MainForm;
+
+ public virtual IWin32Window SelfAsHandle => this;
+
public virtual bool AskSaveChanges() => true;
public virtual void Restart() {}
@@ -80,7 +84,7 @@ namespace BizHawk.Client.EmuHawk
return new FileInfo(ofd.FileName);
}
- public static FileInfo SaveFileDialog(string currentFile, string path, string fileType, string fileExt, IDialogController dialogController, IWin32Window owner)
+ public static FileInfo SaveFileDialog(string currentFile, string path, string fileType, string fileExt, IDialogParent parent)
{
if (!Directory.Exists(path))
{
@@ -95,7 +99,7 @@ namespace BizHawk.Client.EmuHawk
RestoreDirectory = true
};
- var result = dialogController.DoWithTempMute(() => sfd.ShowDialog(owner));
+ var result = parent.DialogController.DoWithTempMute(() => sfd.ShowDialog(parent.SelfAsHandle));
if (result != DialogResult.OK)
{
return null;
@@ -111,7 +115,7 @@ namespace BizHawk.Client.EmuHawk
public FileInfo GetWatchSaveFileFromUser(string currentFile)
{
- return SaveFileDialog(currentFile, Config.PathEntries.WatchAbsolutePath(), "Watch Files", "wch", MainForm, this);
+ return SaveFileDialog(currentFile, Config.PathEntries.WatchAbsolutePath(), "Watch Files", "wch", this);
}
public void ViewInHexEditor(MemoryDomain domain, IEnumerable addresses, WatchSize size)