diff --git a/src/modules/colorPicker/ColorPickerUI/Helpers/AppStateHandler.cs b/src/modules/colorPicker/ColorPickerUI/Helpers/AppStateHandler.cs index 0b1f479cc6..cae2ef4fa0 100644 --- a/src/modules/colorPicker/ColorPickerUI/Helpers/AppStateHandler.cs +++ b/src/modules/colorPicker/ColorPickerUI/Helpers/AppStateHandler.cs @@ -71,6 +71,25 @@ namespace ColorPicker.Helpers _colorEditorWindow.Show(); } + public void HideColorPickerEditor() + { + if (_colorEditorWindow != null) + { + _colorEditorWindow.Hide(); + } + } + + public bool IsColorPickerEditorVisible() + { + if (_colorEditorWindow != null) + { + // Check if we are visible and on top. Using focus producing unreliable results the first time the picker is opened. + return _colorEditorWindow.Topmost && _colorEditorWindow.IsVisible; + } + + return false; + } + public static void SetTopMost() { Application.Current.MainWindow.Topmost = false; diff --git a/src/modules/colorPicker/ColorPickerUI/Keyboard/KeyboardMonitor.cs b/src/modules/colorPicker/ColorPickerUI/Keyboard/KeyboardMonitor.cs index 5f51fe40ca..a96dbe092c 100644 --- a/src/modules/colorPicker/ColorPickerUI/Keyboard/KeyboardMonitor.cs +++ b/src/modules/colorPicker/ColorPickerUI/Keyboard/KeyboardMonitor.cs @@ -72,8 +72,16 @@ namespace ColorPicker.Keyboard // ESC pressed if (virtualCode == KeyInterop.VirtualKeyFromKey(Key.Escape)) { - _appStateHandler.HideColorPicker(); - PowerToysTelemetry.Log.WriteEvent(new ColorPickerCancelledEvent()); + if (_appStateHandler.IsColorPickerEditorVisible()) + { + _appStateHandler.HideColorPickerEditor(); + } + else + { + _appStateHandler.HideColorPicker(); + PowerToysTelemetry.Log.WriteEvent(new ColorPickerCancelledEvent()); + } + return; }