mirror of
https://github.com/ShareX/ShareX.git
synced 2024-07-14 19:05:48 +12: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
|
@ -91,7 +91,7 @@ private void UpdateHotkeyText()
|
||||||
btnHotkey.Text = Setting.HotkeyInfo.ToString();
|
btnHotkey.Text = Setting.HotkeyInfo.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateHotkeyStatus()
|
public void UpdateHotkeyStatus()
|
||||||
{
|
{
|
||||||
switch (Setting.HotkeyInfo.Status)
|
switch (Setting.HotkeyInfo.Status)
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,6 +51,11 @@ public HotkeySettingsForm()
|
||||||
private void HotkeySettingsForm_FormClosed(object sender, FormClosedEventArgs e)
|
private void HotkeySettingsForm_FormClosed(object sender, FormClosedEventArgs e)
|
||||||
{
|
{
|
||||||
Program.HotkeyManager.IgnoreHotkeys = false;
|
Program.HotkeyManager.IgnoreHotkeys = false;
|
||||||
|
|
||||||
|
if (manager != null)
|
||||||
|
{
|
||||||
|
manager.HotkeysToggledTrigger -= HandleHotkeysToggle;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PrepareHotkeys(HotkeyManager hotkeyManager)
|
public void PrepareHotkeys(HotkeyManager hotkeyManager)
|
||||||
|
@ -58,6 +63,8 @@ public void PrepareHotkeys(HotkeyManager hotkeyManager)
|
||||||
if (manager == null)
|
if (manager == null)
|
||||||
{
|
{
|
||||||
manager = hotkeyManager;
|
manager = hotkeyManager;
|
||||||
|
manager.HotkeysToggledTrigger += HandleHotkeysToggle;
|
||||||
|
|
||||||
AddControls();
|
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)
|
private void control_HotkeyChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
HotkeySelectionControl control = (HotkeySelectionControl)sender;
|
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)
|
private void flpHotkeys_Layout(object sender, LayoutEventArgs e)
|
||||||
{
|
{
|
||||||
foreach (Control control in flpHotkeys.Controls)
|
foreach (Control control in flpHotkeys.Controls)
|
||||||
|
|
|
@ -1620,15 +1620,7 @@ private void HandleHotkeys(HotkeySettings hotkeySetting)
|
||||||
|
|
||||||
if (hotkeySetting.TaskSettings.Job != HotkeyType.None)
|
if (hotkeySetting.TaskSettings.Job != HotkeyType.None)
|
||||||
{
|
{
|
||||||
if (hotkeySetting.TaskSettings.Job == HotkeyType.DisableHotkeys)
|
ExecuteJob(hotkeySetting.TaskSettings);
|
||||||
{
|
|
||||||
TaskHelpers.ToggleHotkeys();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Program.Settings.DisableHotkeys)
|
|
||||||
{
|
|
||||||
ExecuteJob(hotkeySetting.TaskSettings);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1791,6 +1783,9 @@ private void ExecuteJob(TaskSettings taskSettings, HotkeyType job)
|
||||||
case HotkeyType.OpenScreenshotsFolder:
|
case HotkeyType.OpenScreenshotsFolder:
|
||||||
TaskHelpers.OpenScreenshotsFolder();
|
TaskHelpers.OpenScreenshotsFolder();
|
||||||
break;
|
break;
|
||||||
|
case HotkeyType.DisableHotkeys:
|
||||||
|
TaskHelpers.ToggleHotkeys();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,10 @@ public class HotkeyManager
|
||||||
public bool IgnoreHotkeys { get; set; }
|
public bool IgnoreHotkeys { get; set; }
|
||||||
|
|
||||||
public delegate void HotkeyTriggerEventHandler(HotkeySettings hotkeySetting);
|
public delegate void HotkeyTriggerEventHandler(HotkeySettings hotkeySetting);
|
||||||
|
public delegate void HotkeysToggledEventHandler(bool hotkeysEnabled);
|
||||||
|
|
||||||
public HotkeyTriggerEventHandler HotkeyTrigger;
|
public HotkeyTriggerEventHandler HotkeyTrigger;
|
||||||
|
public HotkeysToggledEventHandler HotkeysToggledTrigger;
|
||||||
|
|
||||||
private HotkeyForm hotkeyForm;
|
private HotkeyForm hotkeyForm;
|
||||||
|
|
||||||
|
@ -80,19 +82,22 @@ protected void OnHotkeyTrigger(HotkeySettings hotkeySetting)
|
||||||
|
|
||||||
public void RegisterHotkey(HotkeySettings hotkeySetting)
|
public void RegisterHotkey(HotkeySettings hotkeySetting)
|
||||||
{
|
{
|
||||||
UnregisterHotkey(hotkeySetting, false);
|
if (!Program.Settings.DisableHotkeys || hotkeySetting.TaskSettings.Job == HotkeyType.DisableHotkeys)
|
||||||
|
|
||||||
if (hotkeySetting.HotkeyInfo.Status != HotkeyStatus.Registered && hotkeySetting.HotkeyInfo.IsValidHotkey)
|
|
||||||
{
|
{
|
||||||
hotkeyForm.RegisterHotkey(hotkeySetting.HotkeyInfo);
|
UnregisterHotkey(hotkeySetting, false);
|
||||||
|
|
||||||
if (hotkeySetting.HotkeyInfo.Status == HotkeyStatus.Registered)
|
if (hotkeySetting.HotkeyInfo.Status != HotkeyStatus.Registered && hotkeySetting.HotkeyInfo.IsValidHotkey)
|
||||||
{
|
{
|
||||||
DebugHelper.WriteLine("Hotkey registered: " + hotkeySetting);
|
hotkeyForm.RegisterHotkey(hotkeySetting.HotkeyInfo);
|
||||||
}
|
|
||||||
else if (hotkeySetting.HotkeyInfo.Status == HotkeyStatus.Failed)
|
if (hotkeySetting.HotkeyInfo.Status == HotkeyStatus.Registered)
|
||||||
{
|
{
|
||||||
DebugHelper.WriteLine("Hotkey register failed: " + hotkeySetting);
|
DebugHelper.WriteLine("Hotkey registered: " + hotkeySetting);
|
||||||
|
}
|
||||||
|
else if (hotkeySetting.HotkeyInfo.Status == HotkeyStatus.Failed)
|
||||||
|
{
|
||||||
|
DebugHelper.WriteLine("Hotkey register failed: " + hotkeySetting);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,11 +137,31 @@ 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())
|
foreach (HotkeySettings hotkeySetting in Hotkeys.ToArray())
|
||||||
{
|
{
|
||||||
UnregisterHotkey(hotkeySetting, removeFromList);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,6 +184,11 @@ public void ResetHotkeys()
|
||||||
UnregisterAllHotkeys();
|
UnregisterAllHotkeys();
|
||||||
Hotkeys.AddRange(GetDefaultHotkeyList());
|
Hotkeys.AddRange(GetDefaultHotkeyList());
|
||||||
RegisterAllHotkeys();
|
RegisterAllHotkeys();
|
||||||
|
|
||||||
|
if (Program.Settings.DisableHotkeys)
|
||||||
|
{
|
||||||
|
TaskHelpers.ToggleHotkeys();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<HotkeySettings> GetDefaultHotkeyList()
|
public static List<HotkeySettings> GetDefaultHotkeyList()
|
||||||
|
|
|
@ -760,19 +760,20 @@ public static EDataType FindDataType(string filePath, TaskSettings taskSettings)
|
||||||
|
|
||||||
public static bool ToggleHotkeys()
|
public static bool ToggleHotkeys()
|
||||||
{
|
{
|
||||||
bool result = !Program.Settings.DisableHotkeys;
|
bool hotkeysDisabled = !Program.Settings.DisableHotkeys;
|
||||||
Program.Settings.DisableHotkeys = result;
|
|
||||||
|
|
||||||
|
Program.Settings.DisableHotkeys = hotkeysDisabled;
|
||||||
|
Program.HotkeyManager.ToggleHotkeys(hotkeysDisabled);
|
||||||
Program.MainForm.UpdateToggleHotkeyButton();
|
Program.MainForm.UpdateToggleHotkeyButton();
|
||||||
|
|
||||||
if (Program.MainForm.niTray.Visible)
|
if (Program.MainForm.niTray.Visible)
|
||||||
{
|
{
|
||||||
Program.MainForm.niTray.Tag = null;
|
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);
|
Program.MainForm.niTray.ShowBalloonTip(3000, "ShareX", balloonTipText, ToolTipIcon.Info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return hotkeysDisabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool CheckFFmpeg(TaskSettings taskSettings)
|
public static bool CheckFFmpeg(TaskSettings taskSettings)
|
||||||
|
|
Loading…
Reference in a new issue