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();
- }
- }
-}