diff --git a/ShareX.HelpersLib/Forms/ErrorForm.Designer.cs b/ShareX.HelpersLib/Forms/ErrorForm.Designer.cs index 65ac9820d59..b4c95434cb3 100644 --- a/ShareX.HelpersLib/Forms/ErrorForm.Designer.cs +++ b/ShareX.HelpersLib/Forms/ErrorForm.Designer.cs @@ -111,6 +111,7 @@ private void InitializeComponent() this.Controls.Add(this.flpMenu); this.Controls.Add(this.txtException); this.Name = "ErrorForm"; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.TopMost = true; this.Shown += new System.EventHandler(this.ErrorForm_Shown); this.flpMenu.ResumeLayout(false); diff --git a/ShareX/Forms/ApplicationSettingsForm.cs b/ShareX/Forms/ApplicationSettingsForm.cs index 725bae87671..4f28d1f2b28 100644 --- a/ShareX/Forms/ApplicationSettingsForm.cs +++ b/ShareX/Forms/ApplicationSettingsForm.cs @@ -822,14 +822,14 @@ private async void btnImport_Click(object sender, EventArgs e) LanguageHelper.ChangeLanguage(Program.Settings.Language); - Program.MainForm.UpdateControls(); + await Program.MainForm.UpdateControls(); DebugHelper.WriteLine($"Import completed: {importPath}"); } } } - private void btnResetSettings_Click(object sender, EventArgs e) + private async void btnResetSettings_Click(object sender, EventArgs e) { if (MessageBox.Show(Resources.ApplicationSettingsForm_btnResetSettings_Click_WouldYouLikeToResetShareXSettings, "ShareX - " + Resources.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) @@ -841,7 +841,7 @@ private void btnResetSettings_Click(object sender, EventArgs e) LanguageHelper.ChangeLanguage(Program.Settings.Language); - Program.MainForm.UpdateControls(); + await Program.MainForm.UpdateControls(); DebugHelper.WriteLine("Settings reset."); } diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 2b057c1728d..72d6dd6389b 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -58,7 +58,8 @@ private async void MainForm_HandleCreated(object sender, EventArgs e) RunPuushTasks(); NativeMethods.UseImmersiveDarkMode(Handle, ShareXResources.IsDarkTheme); - UpdateControls(); + + await UpdateControls(); DebugHelper.WriteLine("Startup time: {0} ms", Program.StartTimer.ElapsedMilliseconds); @@ -197,7 +198,7 @@ private void InitializeControls() HandleCreated += MainForm_HandleCreated; } - public void UpdateControls() + public async Task UpdateControls() { IsReady = false; @@ -260,7 +261,7 @@ public void UpdateControls() AfterTaskSettingsJobs(); AfterApplicationSettingsJobs(); - InitHotkeys(); + await InitHotkeys(); IsReady = true; } @@ -317,39 +318,35 @@ private void AfterShownJobs() } } - private void InitHotkeys() + private async Task InitHotkeys() { - Task.Run(() => - { - SettingManager.WaitHotkeysConfig(); - }).ContinueInCurrentContext(() => + await Task.Run(() => SettingManager.WaitHotkeysConfig()); + + if (Program.HotkeyManager == null) { - if (Program.HotkeyManager == null) - { - Program.HotkeyManager = new HotkeyManager(this); - Program.HotkeyManager.HotkeyTrigger += HandleHotkeys; - } + Program.HotkeyManager = new HotkeyManager(this); + Program.HotkeyManager.HotkeyTrigger += HandleHotkeys; + } - Program.HotkeyManager.UpdateHotkeys(Program.HotkeysConfig.Hotkeys, !Program.IgnoreHotkeyWarning); + Program.HotkeyManager.UpdateHotkeys(Program.HotkeysConfig.Hotkeys, !Program.IgnoreHotkeyWarning); - DebugHelper.WriteLine("HotkeyManager started."); + DebugHelper.WriteLine("HotkeyManager started."); - if (Program.WatchFolderManager == null) - { - Program.WatchFolderManager = new WatchFolderManager(); - } + if (Program.WatchFolderManager == null) + { + Program.WatchFolderManager = new WatchFolderManager(); + } - Program.WatchFolderManager.UpdateWatchFolders(); + Program.WatchFolderManager.UpdateWatchFolders(); - DebugHelper.WriteLine("WatchFolderManager started."); + DebugHelper.WriteLine("WatchFolderManager started."); - UpdateWorkflowsMenu(); + UpdateWorkflowsMenu(); - if (pHotkeys.Visible) - { - pHotkeys.Focus(); - } - }); + if (pHotkeys.Visible) + { + pHotkeys.Focus(); + } } private async void HandleHotkeys(HotkeySettings hotkeySetting) diff --git a/ShareX/HotkeyManager.cs b/ShareX/HotkeyManager.cs index 9bf486ff3a7..7fb83da5dbc 100644 --- a/ShareX/HotkeyManager.cs +++ b/ShareX/HotkeyManager.cs @@ -47,8 +47,29 @@ public class HotkeyManager public HotkeyManager(HotkeyForm form) { hotkeyForm = form; - hotkeyForm.HotkeyPress += hotkeyForm_HotkeyPress; - hotkeyForm.FormClosed += (sender, e) => hotkeyForm.InvokeSafe(() => UnregisterAllHotkeys(false)); + hotkeyForm.HotkeyPress += HotkeyForm_HotkeyPress; + hotkeyForm.FormClosed += HotkeyForm_FormClosed; + } + + private void HotkeyForm_HotkeyPress(ushort id, Keys key, Modifiers modifier) + { + if (!IgnoreHotkeys && (!Program.Settings.DisableHotkeysOnFullscreen || !CaptureHelpers.IsActiveWindowFullscreen())) + { + HotkeySettings hotkeySetting = Hotkeys.Find(x => x.HotkeyInfo.ID == id); + + if (hotkeySetting != null) + { + OnHotkeyTrigger(hotkeySetting); + } + } + } + + private void HotkeyForm_FormClosed(object sender, FormClosedEventArgs e) + { + if (hotkeyForm != null && !hotkeyForm.IsDisposed) + { + UnregisterAllHotkeys(false); + } } public void UpdateHotkeys(List hotkeys, bool showFailedHotkeys) @@ -68,19 +89,6 @@ public void UpdateHotkeys(List hotkeys, bool showFailedHotkeys) } } - private void hotkeyForm_HotkeyPress(ushort id, Keys key, Modifiers modifier) - { - if (!IgnoreHotkeys && (!Program.Settings.DisableHotkeysOnFullscreen || !CaptureHelpers.IsActiveWindowFullscreen())) - { - HotkeySettings hotkeySetting = Hotkeys.Find(x => x.HotkeyInfo.ID == id); - - if (hotkeySetting != null) - { - OnHotkeyTrigger(hotkeySetting); - } - } - } - protected void OnHotkeyTrigger(HotkeySettings hotkeySetting) { HotkeyTrigger?.Invoke(hotkeySetting);