diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs index 901ce2380..335f1ae04 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs @@ -40,18 +40,35 @@ namespace ShareX.UploadersLib { public partial class UploadersConfigForm : Form { + private static UploadersConfigForm instance; + public UploadersConfig Config { get; private set; } private ImageList uploadersImageList; - private URLType urlType = URLType.URL; + private URLType customUploaderURLType = URLType.URL; - public UploadersConfigForm(UploadersConfig config) + private UploadersConfigForm(UploadersConfig config) { Config = config; InitializeComponent(); InitializeControls(); } + public static UploadersConfigForm GetFormInstance(UploadersConfig config, out bool firstInstance) + { + if (instance == null || instance.IsDisposed) + { + instance = new UploadersConfigForm(config); + firstInstance = true; + } + else + { + firstInstance = false; + } + + return instance; + } + private void UploadersConfigForm_Shown(object sender, EventArgs e) { LoadSettings(); @@ -2861,24 +2878,24 @@ private void btnCustomUploaderXmlSyntaxAdd_Click(object sender, EventArgs e) private void txtCustomUploaderURL_Enter(object sender, EventArgs e) { - urlType = URLType.URL; + customUploaderURLType = URLType.URL; } private void txtCustomUploaderThumbnailURL_Enter(object sender, EventArgs e) { - urlType = URLType.ThumbnailURL; + customUploaderURLType = URLType.ThumbnailURL; } private void txtCustomUploaderDeletionURL_Enter(object sender, EventArgs e) { - urlType = URLType.DeletionURL; + customUploaderURLType = URLType.DeletionURL; } private void AddTextToActiveURLField(string text) { TextBox tb; - switch (urlType) + switch (customUploaderURLType) { default: case URLType.URL: diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index 34b3f5342..ad5fc59df 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -916,17 +916,29 @@ public static void OpenUploadersConfigWindow(IUploaderService uploaderService = Program.UploaderSettingsResetEvent.WaitOne(); } - using (UploadersConfigForm uploadersConfigForm = new UploadersConfigForm(Program.UploadersConfig)) + bool firstInstance; + UploadersConfigForm form = UploadersConfigForm.GetFormInstance(Program.UploadersConfig, out firstInstance); + + if (firstInstance) + { + form.FormClosed += (sender, e) => Program.UploadersConfigSaveAsync(); + + if (uploaderService != null) + { + form.NavigateToTabPage(uploaderService.GetUploadersConfigTabPage(form)); + } + + form.Show(); + } + else { if (uploaderService != null) { - uploadersConfigForm.NavigateToTabPage(uploaderService.GetUploadersConfigTabPage(uploadersConfigForm)); + form.NavigateToTabPage(uploaderService.GetUploadersConfigTabPage(form)); } - uploadersConfigForm.ShowDialog(); + form.ForceActivate(); } - - Program.UploadersConfigSaveAsync(); } } } \ No newline at end of file