diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs index df614edc79..5766df7d70 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs @@ -235,6 +235,8 @@ namespace FancyZonesEditor private void OnClosing(object sender, EventArgs e) { + CancelLayoutChanges(); + App.FancyZonesEditorIO.SerializeZoneSettings(); App.Overlay.CloseLayoutWindow(); App.Current.Shutdown(); @@ -259,11 +261,11 @@ namespace FancyZonesEditor if (_settings.SelectedModel is GridLayoutModel grid) { - _backup = new GridLayoutModel(grid); + _backup = new GridLayoutModel(grid, false); } else if (_settings.SelectedModel is CanvasLayoutModel canvas) { - _backup = new CanvasLayoutModel(canvas); + _backup = new CanvasLayoutModel(canvas, false); } await EditLayoutDialog.ShowAsync(); @@ -354,10 +356,7 @@ namespace FancyZonesEditor // EditLayout: Cancel changes private void EditLayoutDialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { - // restore model properties from settings - _settings.RestoreSelectedModel(_backup); - _backup = null; - + CancelLayoutChanges(); Select(_settings.AppliedModel); } @@ -467,5 +466,14 @@ namespace FancyZonesEditor TextBox tb = sender as TextBox; tb.SelectionStart = tb.Text.Length; } + + private void CancelLayoutChanges() + { + if (_backup != null) + { + _settings.RestoreSelectedModel(_backup); + _backup = null; + } + } } } diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs index e8f13bb7b8..1b866836ce 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs @@ -52,8 +52,8 @@ namespace FancyZonesEditor.Models { } - public CanvasLayoutModel(CanvasLayoutModel other) - : base(other) + public CanvasLayoutModel(CanvasLayoutModel other, bool enableQuickKeysPropertyChangedSubscribe = true) + : base(other, enableQuickKeysPropertyChangedSubscribe) { CanvasRect = new Rect(other.CanvasRect.X, other.CanvasRect.Y, other.CanvasRect.Width, other.CanvasRect.Height); diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Models/GridLayoutModel.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Models/GridLayoutModel.cs index cae71e2d38..879059df70 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/Models/GridLayoutModel.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/Models/GridLayoutModel.cs @@ -146,8 +146,8 @@ namespace FancyZonesEditor.Models CellChildMap = cellChildMap; } - public GridLayoutModel(GridLayoutModel other) - : base(other) + public GridLayoutModel(GridLayoutModel other, bool enableQuickKeysPropertyChangedSubscribe = true) + : base(other, enableQuickKeysPropertyChangedSubscribe) { _rows = other._rows; _cols = other._cols; diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Models/LayoutModel.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Models/LayoutModel.cs index 6f1ac7912f..1032597d7c 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/Models/LayoutModel.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/Models/LayoutModel.cs @@ -42,7 +42,7 @@ namespace FancyZonesEditor.Models Type = type; } - protected LayoutModel(LayoutModel other) + protected LayoutModel(LayoutModel other, bool enableQuickKeysPropertyChangedSubscribe) { _guid = other._guid; _name = other._name; @@ -53,7 +53,10 @@ namespace FancyZonesEditor.Models _zoneCount = other._zoneCount; _quickKey = other._quickKey; - MainWindowSettingsModel.QuickKeys.PropertyChanged += QuickSwitchKeys_PropertyChanged; + if (enableQuickKeysPropertyChangedSubscribe) + { + MainWindowSettingsModel.QuickKeys.PropertyChanged += QuickSwitchKeys_PropertyChanged; + } } // Name - the display name for this layout model - is also used as the key in the registry