diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/CanvasEditor.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/CanvasEditor.xaml.cs index 619dfc7c8..e898e3e8e 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/CanvasEditor.xaml.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/CanvasEditor.xaml.cs @@ -6,7 +6,6 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Input; using FancyZonesEditor.Models; -using FancyZonesEditor.Utils; namespace FancyZonesEditor { @@ -24,6 +23,7 @@ namespace FancyZonesEditor { InitializeComponent(); Loaded += OnLoaded; + Unloaded += OnUnloaded; KeyDown += CanvasEditor_KeyDown; } @@ -53,7 +53,15 @@ namespace FancyZonesEditor _model = model; UpdateZoneRects(); - model.PropertyChanged += OnModelChanged; + _model.PropertyChanged += OnModelChanged; + } + } + + private void OnUnloaded(object sender, RoutedEventArgs e) + { + if (_model != null) + { + _model.PropertyChanged -= OnModelChanged; } } diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/CanvasZone.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/CanvasZone.xaml.cs index fe52de857..eb5495a83 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/CanvasZone.xaml.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/CanvasZone.xaml.cs @@ -9,7 +9,6 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Input; using FancyZonesEditor.Models; -using FancyZonesEditor.Utils; namespace FancyZonesEditor { diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/GridEditor.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/GridEditor.xaml.cs index 18bfb3ba0..694da44bb 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/GridEditor.xaml.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/GridEditor.xaml.cs @@ -39,11 +39,12 @@ namespace FancyZonesEditor Loaded += GridEditor_Loaded; Unloaded += GridEditor_Unloaded; gridEditorUniqueId = ++gridEditorUniqueIdCounter; - ((App)Application.Current).MainWindowSettings.PropertyChanged += ZoneSettings_PropertyChanged; } private void GridEditor_Loaded(object sender, RoutedEventArgs e) { + ((App)Application.Current).MainWindowSettings.PropertyChanged += ZoneSettings_PropertyChanged; + GridLayoutModel model = (GridLayoutModel)DataContext; if (model == null) { @@ -57,6 +58,18 @@ namespace FancyZonesEditor SetupUI(); } + private void GridEditor_Unloaded(object sender, RoutedEventArgs e) + { + ((App)Application.Current).MainWindowSettings.PropertyChanged -= ZoneSettings_PropertyChanged; + + if (Model != null) + { + Model.PropertyChanged -= OnGridDimensionsChanged; + } + + gridEditorUniqueId = -1; + } + private void PlaceResizer(GridResizer resizerThumb) { var leftZone = Preview.Children[resizerThumb.LeftReferenceZone]; @@ -174,11 +187,6 @@ namespace FancyZonesEditor } } - private void GridEditor_Unloaded(object sender, RoutedEventArgs e) - { - gridEditorUniqueId = -1; - } - private Size WorkAreaSize() { Rect workingArea = App.Overlay.WorkArea; @@ -188,7 +196,7 @@ namespace FancyZonesEditor public GridLayoutModel Model { get { return (GridLayoutModel)GetValue(ModelProperty); } - set { SetValue(ModelProperty, value); } + private set { SetValue(ModelProperty, value); } } public Panel PreviewPanel diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/LayoutPreview.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/LayoutPreview.xaml.cs index cbbb75003..65472fec1 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/LayoutPreview.xaml.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/LayoutPreview.xaml.cs @@ -37,7 +37,6 @@ namespace FancyZonesEditor { InitializeComponent(); DataContextChanged += LayoutPreview_DataContextChanged; - ((App)Application.Current).MainWindowSettings.PropertyChanged += ZoneSettings_PropertyChanged; } public void UpdatePreview() @@ -60,7 +59,7 @@ namespace FancyZonesEditor } } - private void ZoneSettings_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) + public void ZoneSettings_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == PropertyZoneCountID) { diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml b/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml index 31f86414b..e0a6e2411 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml +++ b/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml @@ -232,16 +232,13 @@ Margin="16,48,16,16"> + + + + + + + _customModels = new ObservableCollection(); + public static int CustomModelsCount + { + get + { + return _customModels.Count; + } + } + public static QuickKeysModel QuickKeys { get; } = new QuickKeysModel(); public LayoutModel SelectedModel diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Overlay.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Overlay.cs index 46701586e..30401323e 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/Overlay.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/Overlay.cs @@ -134,12 +134,20 @@ namespace FancyZonesEditor public void Show() { + var mainWindowSettings = ((App)Application.Current).MainWindowSettings; + if (_layoutPreview != null) + { + mainWindowSettings.PropertyChanged -= _layoutPreview.ZoneSettings_PropertyChanged; + } + _layoutPreview = new LayoutPreview { IsActualSize = true, Opacity = 1, }; + mainWindowSettings.PropertyChanged += _layoutPreview.ZoneSettings_PropertyChanged; + ShowLayout(); OpenMainWindow(); } @@ -160,7 +168,10 @@ namespace FancyZonesEditor for (int i = 0; i < DesktopsCount; i++) { - Monitors[i].Window.Show(); + if (!Monitors[i].Window.IsVisible) + { + Monitors[i].Window.Show(); + } } } @@ -218,13 +229,23 @@ namespace FancyZonesEditor public void CloseEditor() { + var mainWindowSettings = ((App)Application.Current).MainWindowSettings; + _editorLayout = null; + + if (_layoutPreview != null) + { + mainWindowSettings.PropertyChanged -= _layoutPreview.ZoneSettings_PropertyChanged; + } + _layoutPreview = new LayoutPreview { IsActualSize = true, Opacity = 1, }; + mainWindowSettings.PropertyChanged += _layoutPreview.ZoneSettings_PropertyChanged; + CurrentLayoutWindow.Content = _layoutPreview; OpenMainWindow(); diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Utils/FancyZonesEditorIO.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Utils/FancyZonesEditorIO.cs index 48bd28b9b..2f1b99adb 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/Utils/FancyZonesEditorIO.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/Utils/FancyZonesEditorIO.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Globalization; using System.IO; using System.IO.Abstractions; @@ -758,7 +759,7 @@ namespace FancyZonesEditor.Utils return false; } - MainWindowSettingsModel.CustomModels.Clear(); + ObservableCollection models = new ObservableCollection(); bool result = true; foreach (var zoneSet in customLayouts) @@ -793,9 +794,11 @@ namespace FancyZonesEditor.Utils continue; } - MainWindowSettingsModel.CustomModels.Add(layout); + models.Add(layout); } + MainWindowSettingsModel.CustomModels = models; + return result; } diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/ViewModels/MonitorViewModel.cs b/src/modules/fancyzones/editor/FancyZonesEditor/ViewModels/MonitorViewModel.cs index 739ec53ec..48e3e07d0 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/ViewModels/MonitorViewModel.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/ViewModels/MonitorViewModel.cs @@ -21,10 +21,6 @@ namespace FancyZonesEditor.ViewModels public static double DesktopPreviewMultiplier { get; private set; } - public RelayCommand AddCommand { get; set; } - - public RelayCommand DeleteCommand { get; set; } - public RelayCommand SelectCommand { get; set; } public MonitorViewModel() diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/WindowLayout.xaml b/src/modules/fancyzones/editor/FancyZonesEditor/WindowLayout.xaml deleted file mode 100644 index 1fd306a0a..000000000 --- a/src/modules/fancyzones/editor/FancyZonesEditor/WindowLayout.xaml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/WindowLayout.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/WindowLayout.xaml.cs deleted file mode 100644 index 7e57c830d..000000000 --- a/src/modules/fancyzones/editor/FancyZonesEditor/WindowLayout.xaml.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation -// The Microsoft Corporation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Windows; - -namespace FancyZonesEditor -{ - /// - /// Interaction logic for WindowLayout.xaml - /// - public partial class WindowLayout : Window - { - public WindowLayout() - { - InitializeComponent(); - } - - private void OnLoaded(object sender, RoutedEventArgs e) - { - // WindowEditor window = new WindowEditor(); window.Show(); - } - } -}