mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-04 04:06:05 +13:00
Merge pull request #1095 from mpistrich/unregister-hotkeys-on-disable
Issue #846: Unregister hotkeys when disabling them.
This commit is contained in:
commit
d8b4e54c1c
5 changed files with 72 additions and 26 deletions
|
@ -91,7 +91,7 @@ private void UpdateHotkeyText()
|
|||
btnHotkey.Text = Setting.HotkeyInfo.ToString();
|
||||
}
|
||||
|
||||
private void UpdateHotkeyStatus()
|
||||
public void UpdateHotkeyStatus()
|
||||
{
|
||||
switch (Setting.HotkeyInfo.Status)
|
||||
{
|
||||
|
|
|
@ -51,6 +51,11 @@ public HotkeySettingsForm()
|
|||
private void HotkeySettingsForm_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
Program.HotkeyManager.IgnoreHotkeys = false;
|
||||
|
||||
if (manager != null)
|
||||
{
|
||||
manager.HotkeysToggledTrigger -= HandleHotkeysToggle;
|
||||
}
|
||||
}
|
||||
|
||||
public void PrepareHotkeys(HotkeyManager hotkeyManager)
|
||||
|
@ -58,6 +63,8 @@ public void PrepareHotkeys(HotkeyManager hotkeyManager)
|
|||
if (manager == null)
|
||||
{
|
||||
manager = hotkeyManager;
|
||||
manager.HotkeysToggledTrigger += HandleHotkeysToggle;
|
||||
|
||||
AddControls();
|
||||
}
|
||||
}
|
||||
|
@ -97,6 +104,14 @@ private void UpdateCheckStates()
|
|||
}
|
||||
}
|
||||
|
||||
private void UpdateHotkeyStatus()
|
||||
{
|
||||
foreach (Control control in flpHotkeys.Controls)
|
||||
{
|
||||
((HotkeySelectionControl)control).UpdateHotkeyStatus();
|
||||
}
|
||||
}
|
||||
|
||||
private void control_HotkeyChanged(object sender, EventArgs e)
|
||||
{
|
||||
HotkeySelectionControl control = (HotkeySelectionControl)sender;
|
||||
|
@ -136,6 +151,11 @@ private void EditSelected()
|
|||
}
|
||||
}
|
||||
|
||||
private void HandleHotkeysToggle(bool hotkeysEnabled)
|
||||
{
|
||||
UpdateHotkeyStatus();
|
||||
}
|
||||
|
||||
private void flpHotkeys_Layout(object sender, LayoutEventArgs e)
|
||||
{
|
||||
foreach (Control control in flpHotkeys.Controls)
|
||||
|
|
|
@ -1619,18 +1619,10 @@ private void HandleHotkeys(HotkeySettings hotkeySetting)
|
|||
DebugHelper.WriteLine("Hotkey triggered: " + hotkeySetting);
|
||||
|
||||
if (hotkeySetting.TaskSettings.Job != HotkeyType.None)
|
||||
{
|
||||
if (hotkeySetting.TaskSettings.Job == HotkeyType.DisableHotkeys)
|
||||
{
|
||||
TaskHelpers.ToggleHotkeys();
|
||||
}
|
||||
|
||||
if (!Program.Settings.DisableHotkeys)
|
||||
{
|
||||
ExecuteJob(hotkeySetting.TaskSettings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecuteJob(HotkeyType job)
|
||||
{
|
||||
|
@ -1791,6 +1783,9 @@ private void ExecuteJob(TaskSettings taskSettings, HotkeyType job)
|
|||
case HotkeyType.OpenScreenshotsFolder:
|
||||
TaskHelpers.OpenScreenshotsFolder();
|
||||
break;
|
||||
case HotkeyType.DisableHotkeys:
|
||||
TaskHelpers.ToggleHotkeys();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,8 +37,10 @@ public class HotkeyManager
|
|||
public bool IgnoreHotkeys { get; set; }
|
||||
|
||||
public delegate void HotkeyTriggerEventHandler(HotkeySettings hotkeySetting);
|
||||
public delegate void HotkeysToggledEventHandler(bool hotkeysEnabled);
|
||||
|
||||
public HotkeyTriggerEventHandler HotkeyTrigger;
|
||||
public HotkeysToggledEventHandler HotkeysToggledTrigger;
|
||||
|
||||
private HotkeyForm hotkeyForm;
|
||||
|
||||
|
@ -79,6 +81,8 @@ protected void OnHotkeyTrigger(HotkeySettings hotkeySetting)
|
|||
}
|
||||
|
||||
public void RegisterHotkey(HotkeySettings hotkeySetting)
|
||||
{
|
||||
if (!Program.Settings.DisableHotkeys || hotkeySetting.TaskSettings.Job == HotkeyType.DisableHotkeys)
|
||||
{
|
||||
UnregisterHotkey(hotkeySetting, false);
|
||||
|
||||
|
@ -95,6 +99,7 @@ public void RegisterHotkey(HotkeySettings hotkeySetting)
|
|||
DebugHelper.WriteLine("Hotkey register failed: " + hotkeySetting);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!Hotkeys.Contains(hotkeySetting))
|
||||
{
|
||||
|
@ -132,13 +137,33 @@ public void UnregisterHotkey(HotkeySettings hotkeySetting, bool removeFromList =
|
|||
}
|
||||
}
|
||||
|
||||
public void UnregisterAllHotkeys(bool removeFromList = true)
|
||||
public void UnregisterAllHotkeys(bool removeFromList = true, bool temporary = false)
|
||||
{
|
||||
foreach (HotkeySettings hotkeySetting in Hotkeys.ToArray())
|
||||
{
|
||||
if (!temporary || (temporary && hotkeySetting.TaskSettings.Job != HotkeyType.DisableHotkeys))
|
||||
{
|
||||
UnregisterHotkey(hotkeySetting, removeFromList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ToggleHotkeys(bool hotkeysDisabled)
|
||||
{
|
||||
if (!hotkeysDisabled)
|
||||
{
|
||||
RegisterAllHotkeys();
|
||||
}
|
||||
else
|
||||
{
|
||||
UnregisterAllHotkeys(false, true);
|
||||
}
|
||||
|
||||
if (HotkeysToggledTrigger != null)
|
||||
{
|
||||
HotkeysToggledTrigger(hotkeysDisabled);
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowFailedHotkeys()
|
||||
{
|
||||
|
@ -159,6 +184,11 @@ public void ResetHotkeys()
|
|||
UnregisterAllHotkeys();
|
||||
Hotkeys.AddRange(GetDefaultHotkeyList());
|
||||
RegisterAllHotkeys();
|
||||
|
||||
if (Program.Settings.DisableHotkeys)
|
||||
{
|
||||
TaskHelpers.ToggleHotkeys();
|
||||
}
|
||||
}
|
||||
|
||||
public static List<HotkeySettings> GetDefaultHotkeyList()
|
||||
|
|
|
@ -760,19 +760,20 @@ public static EDataType FindDataType(string filePath, TaskSettings taskSettings)
|
|||
|
||||
public static bool ToggleHotkeys()
|
||||
{
|
||||
bool result = !Program.Settings.DisableHotkeys;
|
||||
Program.Settings.DisableHotkeys = result;
|
||||
bool hotkeysDisabled = !Program.Settings.DisableHotkeys;
|
||||
|
||||
Program.Settings.DisableHotkeys = hotkeysDisabled;
|
||||
Program.HotkeyManager.ToggleHotkeys(hotkeysDisabled);
|
||||
Program.MainForm.UpdateToggleHotkeyButton();
|
||||
|
||||
if (Program.MainForm.niTray.Visible)
|
||||
{
|
||||
Program.MainForm.niTray.Tag = null;
|
||||
string balloonTipText = result ? Resources.TaskHelpers_ToggleHotkeys_Hotkeys_disabled_ : Resources.TaskHelpers_ToggleHotkeys_Hotkeys_enabled_;
|
||||
string balloonTipText = hotkeysDisabled ? Resources.TaskHelpers_ToggleHotkeys_Hotkeys_disabled_ : Resources.TaskHelpers_ToggleHotkeys_Hotkeys_enabled_;
|
||||
Program.MainForm.niTray.ShowBalloonTip(3000, "ShareX", balloonTipText, ToolTipIcon.Info);
|
||||
}
|
||||
|
||||
return result;
|
||||
return hotkeysDisabled;
|
||||
}
|
||||
|
||||
public static bool CheckFFmpeg(TaskSettings taskSettings)
|
||||
|
|
Loading…
Reference in a new issue