From 106c3164420a99d596511e5b1dccb1c70dcfc1fc Mon Sep 17 00:00:00 2001 From: stefansjfw <57057282+stefansjfw@users.noreply.github.com> Date: Wed, 8 Jul 2020 15:34:19 +0200 Subject: [PATCH] [FancyZones] Don't create new custom layout when applying Focus layout (#4755) * Only persist data when applying existing layout if it is scaled * Fix applying edited Focus layout * Fix different Focus zone sizes in editor and engine * Fix codestyle --- .../editor/FancyZonesEditor/MainWindow.xaml.cs | 7 ++++--- .../FancyZonesEditor/Models/CanvasLayoutModel.cs | 12 +++++++++++- src/modules/fancyzones/lib/ZoneSet.cpp | 4 ++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs index d6b86f0a5c..8a242a9db2 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs @@ -149,13 +149,14 @@ namespace FancyZonesEditor if (mainEditor.DataContext is LayoutModel model) { - if (model is GridLayoutModel) + // If custom canvas layout has been scaled, persisting is needed + if (model is CanvasLayoutModel && (model as CanvasLayoutModel).IsScaled) { - model.Apply(); + model.Persist(); } else { - model.Persist(); + model.Apply(); } Close(); diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs index ac1d12aff2..fb6ee58434 100644 --- a/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs +++ b/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs @@ -19,6 +19,7 @@ namespace FancyZonesEditor.Models { lastWorkAreaWidth = workAreaWidth; lastWorkAreaHeight = workAreaHeight; + IsScaled = false; if (ShouldScaleLayout()) { @@ -32,6 +33,12 @@ namespace FancyZonesEditor.Models public CanvasLayoutModel(string name, LayoutType type) : base(name, type) + { + IsScaled = false; + } + + public CanvasLayoutModel(string name) + : base(name) { } @@ -42,6 +49,8 @@ namespace FancyZonesEditor.Models private int lastWorkAreaHeight = (int)Settings.WorkArea.Height; + public bool IsScaled { get; private set; } + // RemoveZoneAt // Removes the specified index from the Zones list, and fires a property changed notification for the Zones property public void RemoveZoneAt(int index) @@ -63,7 +72,7 @@ namespace FancyZonesEditor.Models // Clones the data from this CanvasLayoutModel to a new CanvasLayoutModel public override LayoutModel Clone() { - CanvasLayoutModel layout = new CanvasLayoutModel(Name, Type); + CanvasLayoutModel layout = new CanvasLayoutModel(Name); foreach (Int32Rect zone in Zones) { @@ -107,6 +116,7 @@ namespace FancyZonesEditor.Models lastWorkAreaHeight = (int)Settings.WorkArea.Height; lastWorkAreaWidth = (int)Settings.WorkArea.Width; + IsScaled = true; } private struct Zone diff --git a/src/modules/fancyzones/lib/ZoneSet.cpp b/src/modules/fancyzones/lib/ZoneSet.cpp index adb8f3a6a9..26494b018e 100644 --- a/src/modules/fancyzones/lib/ZoneSet.cpp +++ b/src/modules/fancyzones/lib/ZoneSet.cpp @@ -420,8 +420,8 @@ bool ZoneSet::CalculateFocusLayout(Rect workArea, int zoneCount) noexcept long left{ long(workArea.width() * 0.1) }; long top{ long(workArea.height() * 0.1) }; - long right{ long(workArea.width() * 0.6) }; - long bottom{ long(workArea.height() * 0.6) }; + long right{ left + long(workArea.width() * 0.6) }; + long bottom{ top + long(workArea.height() * 0.6) }; RECT focusZoneRect{ left, top, right, bottom };