diff --git a/ShareX.HelpersLib/Controls/TabToTreeView.cs b/ShareX.HelpersLib/Controls/TabToTreeView.cs index 92652839d..086da9943 100644 --- a/ShareX.HelpersLib/Controls/TabToTreeView.cs +++ b/ShareX.HelpersLib/Controls/TabToTreeView.cs @@ -45,9 +45,12 @@ public TabControl MainTabControl } set { - mainTabControl = value; - FillTreeView(tvMain.Nodes, mainTabControl); - tvMain.ExpandAll(); + if (mainTabControl != value) + { + mainTabControl = value; + FillTreeView(tvMain.Nodes, mainTabControl); + tvMain.ExpandAll(); + } } } diff --git a/ShareX/Forms/ApplicationSettingsForm.cs b/ShareX/Forms/ApplicationSettingsForm.cs index 1f75dd516..0b35528e5 100644 --- a/ShareX/Forms/ApplicationSettingsForm.cs +++ b/ShareX/Forms/ApplicationSettingsForm.cs @@ -118,6 +118,7 @@ private void UpdateSettings() cbExportSettings.Checked = Program.Settings.ExportSettings; cbExportHistory.Checked = Program.Settings.ExportHistory; cbExportLogs.Checked = Program.Settings.ExportLogs; + UpdateExportButton(); // Proxy if (firstLoad) @@ -285,6 +286,11 @@ private void UpdatePersonalFolderPathPreview() lblPreviewPersonalFolderPath.Text = personalPath; } + private void UpdateExportButton() + { + btnExport.Enabled = Program.Settings.ExportSettings || Program.Settings.ExportHistory || Program.Settings.ExportLogs; + } + #region General private void llTranslators_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) @@ -429,16 +435,19 @@ private void btnOpenScreenshotsFolder_Click(object sender, EventArgs e) private void cbExportSettings_CheckedChanged(object sender, EventArgs e) { Program.Settings.ExportSettings = cbExportSettings.Checked; + UpdateExportButton(); } private void cbExportHistory_CheckedChanged(object sender, EventArgs e) { Program.Settings.ExportHistory = cbExportHistory.Checked; + UpdateExportButton(); } private void cbExportLogs_CheckedChanged(object sender, EventArgs e) { Program.Settings.ExportLogs = cbExportLogs.Checked; + UpdateExportButton(); } private void btnExport_Click(object sender, EventArgs e) @@ -455,7 +464,12 @@ private void btnExport_Click(object sender, EventArgs e) btnImport.Enabled = false; pbExportImport.Visible = true; - TaskEx.Run(() => ExportImportManager.Export(sfd.FileName), () => + TaskEx.Run(() => + { + Program.SaveAllSettings(); + ExportImportManager.Export(sfd.FileName); + }, + () => { pbExportImport.Visible = false; btnExport.Enabled = true; @@ -477,8 +491,14 @@ private void btnImport_Click(object sender, EventArgs e) btnImport.Enabled = false; pbExportImport.Visible = true; - TaskEx.Run(() => ExportImportManager.Import(ofd.FileName), () => + TaskEx.Run(() => { + ExportImportManager.Import(ofd.FileName); + Program.LoadAllSettings(); + }, + () => + { + UpdateSettings(); pbExportImport.Visible = false; btnExport.Enabled = true; btnImport.Enabled = true; diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 4883d6efa..32c38c14e 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -951,7 +951,7 @@ private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; Hide(); - Program.SaveSettingsAsync(); + Program.SaveAllSettingsAsync(); } } diff --git a/ShareX/Program.cs b/ShareX/Program.cs index 42685737a..301753c3e 100644 --- a/ShareX/Program.cs +++ b/ShareX/Program.cs @@ -315,7 +315,7 @@ private static void Run() Application.Run(MainForm); if (WatchFolderManager != null) WatchFolderManager.Dispose(); - SaveSettings(); + SaveAllSettings(); BackupSettings(); DebugHelper.Logger.Async = false; @@ -399,14 +399,21 @@ public static void LoadHotkeySettings() HotkeysConfig = HotkeysConfig.Load(HotkeysConfigFilePath); } - public static void SaveSettings() + public static void LoadAllSettings() + { + LoadProgramSettings(); + LoadUploadersConfig(); + LoadHotkeySettings(); + } + + public static void SaveAllSettings() { if (Settings != null) Settings.Save(ApplicationConfigFilePath); if (UploadersConfig != null) UploadersConfig.Save(UploadersConfigFilePath); if (HotkeysConfig != null) HotkeysConfig.Save(HotkeysConfigFilePath); } - public static void SaveSettingsAsync() + public static void SaveAllSettingsAsync() { if (Settings != null) Settings.SaveAsync(ApplicationConfigFilePath); UploadersConfigSaveAsync();