mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 10:46:33 +02:00
[Settings, OOBE] set location to center screen (#10022)
and ensure the window is inside the screen work area
This commit is contained in:
@@ -33,20 +33,8 @@ namespace PowerToys.Settings
|
|||||||
{
|
{
|
||||||
settingsWindow = new MainWindow();
|
settingsWindow = new MainWindow();
|
||||||
|
|
||||||
// To avoid visual flickering, show the window with a size of 0,0
|
Utils.ShowHide(settingsWindow);
|
||||||
// and don't show it in the taskbar
|
Utils.CenterToScreen(settingsWindow);
|
||||||
var originalHight = settingsWindow.Height;
|
|
||||||
var originalWidth = settingsWindow.Width;
|
|
||||||
settingsWindow.Height = 0;
|
|
||||||
settingsWindow.Width = 0;
|
|
||||||
settingsWindow.ShowInTaskbar = false;
|
|
||||||
|
|
||||||
settingsWindow.Show();
|
|
||||||
settingsWindow.Hide();
|
|
||||||
|
|
||||||
settingsWindow.Height = originalHight;
|
|
||||||
settingsWindow.Width = originalWidth;
|
|
||||||
settingsWindow.ShowInTaskbar = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Application_Startup(object sender, StartupEventArgs e)
|
private void Application_Startup(object sender, StartupEventArgs e)
|
||||||
|
|||||||
@@ -7,7 +7,15 @@
|
|||||||
xmlns:Controls="clr-namespace:Microsoft.Toolkit.Wpf.UI.Controls;assembly=Microsoft.Toolkit.Wpf.UI.Controls"
|
xmlns:Controls="clr-namespace:Microsoft.Toolkit.Wpf.UI.Controls;assembly=Microsoft.Toolkit.Wpf.UI.Controls"
|
||||||
xmlns:xaml="clr-namespace:Microsoft.Toolkit.Wpf.UI.XamlHost;assembly=Microsoft.Toolkit.Wpf.UI.XamlHost"
|
xmlns:xaml="clr-namespace:Microsoft.Toolkit.Wpf.UI.XamlHost;assembly=Microsoft.Toolkit.Wpf.UI.XamlHost"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="PowerToys Settings" MinWidth="480" Height="800" Width="1100" Closing="MainWindow_Closing" Loaded="MainWindow_Loaded" Activated="MainWindow_Activated">
|
Title="PowerToys Settings"
|
||||||
|
Height="860"
|
||||||
|
MinHeight="400"
|
||||||
|
Width="1180"
|
||||||
|
MinWidth="480"
|
||||||
|
WindowStartupLocation="CenterScreen"
|
||||||
|
Closing="MainWindow_Closing"
|
||||||
|
Loaded="MainWindow_Loaded"
|
||||||
|
Activated="MainWindow_Activated">
|
||||||
<Grid>
|
<Grid>
|
||||||
<xaml:WindowsXamlHost InitialTypeName="Microsoft.PowerToys.Settings.UI.Views.ShellPage" ChildChanged="WindowsXamlHost_ChildChanged" />
|
<xaml:WindowsXamlHost InitialTypeName="Microsoft.PowerToys.Settings.UI.Views.ShellPage" ChildChanged="WindowsXamlHost_ChildChanged" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ namespace PowerToys.Settings
|
|||||||
bootTime.Start();
|
bootTime.Start();
|
||||||
|
|
||||||
this.InitializeComponent();
|
this.InitializeComponent();
|
||||||
|
|
||||||
|
Utils.FitToScreen(this);
|
||||||
|
|
||||||
bootTime.Stop();
|
bootTime.Stop();
|
||||||
|
|
||||||
PowerToysTelemetry.Log.WriteEvent(new SettingsBootEvent() { BootTimeMs = bootTime.ElapsedMilliseconds });
|
PowerToysTelemetry.Log.WriteEvent(new SettingsBootEvent() { BootTimeMs = bootTime.ElapsedMilliseconds });
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ namespace PowerToys.Settings
|
|||||||
public OobeWindow()
|
public OobeWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
Utils.FitToScreen(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Window_Closed(object sender, EventArgs e)
|
private void Window_Closed(object sender, EventArgs e)
|
||||||
|
|||||||
70
src/settings-ui/PowerToys.Settings/Utils.cs
Normal file
70
src/settings-ui/PowerToys.Settings/Utils.cs
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
// 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 PowerToys.Settings
|
||||||
|
{
|
||||||
|
internal class Utils
|
||||||
|
{
|
||||||
|
public static void FitToScreen(Window window)
|
||||||
|
{
|
||||||
|
if (SystemParameters.WorkArea.Width < window.Width)
|
||||||
|
{
|
||||||
|
window.Width = SystemParameters.WorkArea.Width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SystemParameters.WorkArea.Height < window.Height)
|
||||||
|
{
|
||||||
|
window.Height = SystemParameters.WorkArea.Height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void CenterToScreen(Window window)
|
||||||
|
{
|
||||||
|
if (SystemParameters.WorkArea.Height <= window.Height)
|
||||||
|
{
|
||||||
|
window.Top = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
window.Top = (SystemParameters.WorkArea.Height - window.Height) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SystemParameters.WorkArea.Width <= window.Width)
|
||||||
|
{
|
||||||
|
window.Left = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
window.Left = (SystemParameters.WorkArea.Width - window.Width) / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ShowHide(Window window)
|
||||||
|
{
|
||||||
|
// To limit the visual flickering, show the window with a size of 0,0
|
||||||
|
// and don't show it in the taskbar
|
||||||
|
var originalHeight = window.Height;
|
||||||
|
var originalWidth = window.Width;
|
||||||
|
var originalMinHeight = window.MinHeight;
|
||||||
|
var originalMinWidth = window.MinWidth;
|
||||||
|
|
||||||
|
window.MinHeight = 0;
|
||||||
|
window.MinWidth = 0;
|
||||||
|
window.Height = 0;
|
||||||
|
window.Width = 0;
|
||||||
|
window.ShowInTaskbar = false;
|
||||||
|
|
||||||
|
window.Show();
|
||||||
|
window.Hide();
|
||||||
|
|
||||||
|
window.Height = originalHeight;
|
||||||
|
window.Width = originalWidth;
|
||||||
|
window.MinHeight = originalMinHeight;
|
||||||
|
window.MinWidth = originalMinWidth;
|
||||||
|
window.ShowInTaskbar = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user