mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-15 19:27:56 +01:00
[Workspaces] Implement store of app window's size and position (#36086)
* [Workspaces] Implement store of app window's size and position * Modifying the default values to -1. The program will use the original default values for the first run.
This commit is contained in:
@@ -1,9 +1,33 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
|
<configSections>
|
||||||
|
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||||
|
<section name="WorkspacesEditor.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||||
|
</sectionGroup>
|
||||||
|
</configSections>
|
||||||
<startup>
|
<startup>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
|
||||||
</startup>
|
</startup>
|
||||||
<runtime>
|
<runtime>
|
||||||
<AppContextSwitchOverrides value = "Switch.System.Windows.DoNotScaleForDpiChanges=false"/>
|
<AppContextSwitchOverrides value="Switch.System.Windows.DoNotScaleForDpiChanges=false" />
|
||||||
</runtime>
|
</runtime>
|
||||||
|
<userSettings>
|
||||||
|
<WorkspacesEditor.Properties.Settings>
|
||||||
|
<setting name="Top" serializeAs="String">
|
||||||
|
<value>-1</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="Left" serializeAs="String">
|
||||||
|
<value>-1</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="Height" serializeAs="String">
|
||||||
|
<value>-1</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="Width" serializeAs="String">
|
||||||
|
<value>-1</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="Maximized" serializeAs="String">
|
||||||
|
<value>False</value>
|
||||||
|
</setting>
|
||||||
|
</WorkspacesEditor.Properties.Settings>
|
||||||
|
</userSettings>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
@@ -30,13 +30,28 @@ namespace WorkspacesEditor
|
|||||||
MainViewModel = mainViewModel;
|
MainViewModel = mainViewModel;
|
||||||
mainViewModel.SetMainWindow(this);
|
mainViewModel.SetMainWindow(this);
|
||||||
|
|
||||||
WindowInteropHelper windowInteropHelper = new WindowInteropHelper(this);
|
if (Properties.Settings.Default.Height == -1)
|
||||||
System.Windows.Forms.Screen screen = System.Windows.Forms.Screen.FromHandle(windowInteropHelper.Handle);
|
{
|
||||||
double dpi = MonitorHelper.GetScreenDpiFromScreen(screen);
|
// This is the very first time the window is created. Place it on the screen center
|
||||||
this.Height = screen.WorkingArea.Height / dpi * 0.90;
|
WindowInteropHelper windowInteropHelper = new WindowInteropHelper(this);
|
||||||
this.Width = screen.WorkingArea.Width / dpi * 0.75;
|
System.Windows.Forms.Screen screen = System.Windows.Forms.Screen.FromHandle(windowInteropHelper.Handle);
|
||||||
this.Top = screen.WorkingArea.Top + (int)(screen.WorkingArea.Height / dpi * 0.05);
|
double dpi = MonitorHelper.GetScreenDpiFromScreen(screen);
|
||||||
this.Left = screen.WorkingArea.Left + (int)(screen.WorkingArea.Width / dpi * 0.125);
|
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();
|
InitializeComponent();
|
||||||
|
|
||||||
@@ -73,8 +88,32 @@ namespace WorkspacesEditor
|
|||||||
cancellationToken.Token);
|
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)
|
private void OnClosing(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
SavePosition();
|
||||||
cancellationToken.Dispose();
|
cancellationToken.Dispose();
|
||||||
App.Current.Shutdown();
|
App.Current.Shutdown();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace WorkspacesEditor.Properties {
|
|||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[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 {
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
@@ -22,5 +22,65 @@ namespace WorkspacesEditor.Properties {
|
|||||||
return defaultInstance;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,21 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WorkspacesEditor.Properties" GeneratedClassName="Settings">
|
||||||
<Profiles>
|
<Profiles />
|
||||||
<Profile Name="(Default)" />
|
<Settings>
|
||||||
</Profiles>
|
<Setting Name="Top" Type="System.Double" Scope="User">
|
||||||
<Settings />
|
<Value Profile="(Default)">-1</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="Left" Type="System.Double" Scope="User">
|
||||||
|
<Value Profile="(Default)">-1</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="Height" Type="System.Double" Scope="User">
|
||||||
|
<Value Profile="(Default)">-1</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="Width" Type="System.Double" Scope="User">
|
||||||
|
<Value Profile="(Default)">-1</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="Maximized" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">False</Value>
|
||||||
|
</Setting>
|
||||||
|
</Settings>
|
||||||
</SettingsFile>
|
</SettingsFile>
|
||||||
Reference in New Issue
Block a user