diff --git a/src/modules/Workspaces/WorkspacesEditor/App.config b/src/modules/Workspaces/WorkspacesEditor/App.config
index e31368d2271b..8ac4ff926602 100644
--- a/src/modules/Workspaces/WorkspacesEditor/App.config
+++ b/src/modules/Workspaces/WorkspacesEditor/App.config
@@ -1,9 +1,33 @@
+
+
+
+
+
-
+
+
+
+
+ -1
+
+
+ -1
+
+
+ -1
+
+
+ -1
+
+
+ False
+
+
+
diff --git a/src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs b/src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs
index a0a7f96a069f..8f9944cc9034 100644
--- a/src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs
+++ b/src/modules/Workspaces/WorkspacesEditor/MainWindow.xaml.cs
@@ -30,13 +30,28 @@ public MainWindow(MainViewModel mainViewModel)
MainViewModel = mainViewModel;
mainViewModel.SetMainWindow(this);
- WindowInteropHelper windowInteropHelper = new WindowInteropHelper(this);
- System.Windows.Forms.Screen screen = System.Windows.Forms.Screen.FromHandle(windowInteropHelper.Handle);
- double dpi = MonitorHelper.GetScreenDpiFromScreen(screen);
- this.Height = screen.WorkingArea.Height / dpi * 0.90;
- this.Width = screen.WorkingArea.Width / dpi * 0.75;
- this.Top = screen.WorkingArea.Top + (int)(screen.WorkingArea.Height / dpi * 0.05);
- this.Left = screen.WorkingArea.Left + (int)(screen.WorkingArea.Width / dpi * 0.125);
+ if (Properties.Settings.Default.Height == -1)
+ {
+ // This is the very first time the window is created. Place it on the screen center
+ WindowInteropHelper windowInteropHelper = new WindowInteropHelper(this);
+ System.Windows.Forms.Screen screen = System.Windows.Forms.Screen.FromHandle(windowInteropHelper.Handle);
+ double dpi = MonitorHelper.GetScreenDpiFromScreen(screen);
+ this.Height = screen.WorkingArea.Height / dpi * 0.90;
+ this.Width = screen.WorkingArea.Width / dpi * 0.75;
+ this.Top = screen.WorkingArea.Top + (int)(screen.WorkingArea.Height / dpi * 0.05);
+ this.Left = screen.WorkingArea.Left + (int)(screen.WorkingArea.Width / dpi * 0.125);
+ SavePosition();
+ }
+
+ this.Top = Properties.Settings.Default.Top;
+ this.Left = Properties.Settings.Default.Left;
+ this.Height = Properties.Settings.Default.Height;
+ this.Width = Properties.Settings.Default.Width;
+
+ if (Properties.Settings.Default.Maximized)
+ {
+ WindowState = WindowState.Maximized;
+ }
InitializeComponent();
@@ -73,8 +88,32 @@ public MainWindow(MainViewModel mainViewModel)
cancellationToken.Token);
}
+ private void SavePosition()
+ {
+ if (WindowState == WindowState.Maximized)
+ {
+ // Use the RestoreBounds as the current values will be 0, 0 and the size of the screen
+ Properties.Settings.Default.Top = RestoreBounds.Top;
+ Properties.Settings.Default.Left = RestoreBounds.Left;
+ Properties.Settings.Default.Height = RestoreBounds.Height;
+ Properties.Settings.Default.Width = RestoreBounds.Width;
+ Properties.Settings.Default.Maximized = true;
+ }
+ else
+ {
+ Properties.Settings.Default.Top = this.Top;
+ Properties.Settings.Default.Left = this.Left;
+ Properties.Settings.Default.Height = this.Height;
+ Properties.Settings.Default.Width = this.Width;
+ Properties.Settings.Default.Maximized = false;
+ }
+
+ Properties.Settings.Default.Save();
+ }
+
private void OnClosing(object sender, EventArgs e)
{
+ SavePosition();
cancellationToken.Dispose();
App.Current.Shutdown();
}
diff --git a/src/modules/Workspaces/WorkspacesEditor/Properties/Settings.Designer.cs b/src/modules/Workspaces/WorkspacesEditor/Properties/Settings.Designer.cs
index f598f04baeaa..2f5448b8b645 100644
--- a/src/modules/Workspaces/WorkspacesEditor/Properties/Settings.Designer.cs
+++ b/src/modules/Workspaces/WorkspacesEditor/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace WorkspacesEditor.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.1.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -22,5 +22,65 @@ public static Settings Default {
return defaultInstance;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("-1")]
+ public double Top {
+ get {
+ return ((double)(this["Top"]));
+ }
+ set {
+ this["Top"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("-1")]
+ public double Left {
+ get {
+ return ((double)(this["Left"]));
+ }
+ set {
+ this["Left"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("-1")]
+ public double Height {
+ get {
+ return ((double)(this["Height"]));
+ }
+ set {
+ this["Height"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("-1")]
+ public double Width {
+ get {
+ return ((double)(this["Width"]));
+ }
+ set {
+ this["Width"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool Maximized {
+ get {
+ return ((bool)(this["Maximized"]));
+ }
+ set {
+ this["Maximized"] = value;
+ }
+ }
}
}
diff --git a/src/modules/Workspaces/WorkspacesEditor/Properties/Settings.settings b/src/modules/Workspaces/WorkspacesEditor/Properties/Settings.settings
index 033d7a5e9e22..e7d2ac5f07a7 100644
--- a/src/modules/Workspaces/WorkspacesEditor/Properties/Settings.settings
+++ b/src/modules/Workspaces/WorkspacesEditor/Properties/Settings.settings
@@ -1,7 +1,21 @@
-
-
-
-
-
+
+
+
+
+ -1
+
+
+ -1
+
+
+ -1
+
+
+ -1
+
+
+ False
+
+
\ No newline at end of file