mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 02:36:19 +02:00
[FancyZones]Monitor identification (#19077)
* moved monitors identifying * changed device id * get wmi info * convert old data * save/load applied layouts * changed monitor identification * id comparison * save/load app zone history * moved com and security init * update ids in editor * lib fix * updated tests * changed comparison * tests * updated id comparison * updated log * moved definition * spell check * resolve conflicts * refactoring * update serial numbers if possible
This commit is contained in:
@@ -13,6 +13,10 @@ namespace FancyZonesEditor.Utils
|
||||
{
|
||||
public string MonitorName { get; set; }
|
||||
|
||||
public string MonitorInstanceId { get; set; }
|
||||
|
||||
public string MonitorSerialNumber { get; set; }
|
||||
|
||||
public Size MonitorSize { get; set; }
|
||||
|
||||
public string VirtualDesktopId { get; set; }
|
||||
@@ -23,9 +27,11 @@ namespace FancyZonesEditor.Utils
|
||||
|
||||
public int Dpi { get; set; }
|
||||
|
||||
public Device(string monitorName, string virtualDesktopId, int dpi, Rect workArea, Size monitorSize)
|
||||
public Device(string monitorName, string monitorInstanceId, string monitorSerialNumber, string virtualDesktopId, int dpi, Rect workArea, Size monitorSize)
|
||||
{
|
||||
MonitorName = monitorName;
|
||||
MonitorInstanceId = monitorInstanceId;
|
||||
MonitorSerialNumber = monitorSerialNumber;
|
||||
VirtualDesktopId = virtualDesktopId;
|
||||
Dpi = dpi;
|
||||
WorkAreaRect = workArea;
|
||||
@@ -48,6 +54,8 @@ namespace FancyZonesEditor.Utils
|
||||
var sb = new StringBuilder();
|
||||
|
||||
sb.AppendFormat(CultureInfo.InvariantCulture, "MonitorName: {0}{1}", MonitorName, Environment.NewLine);
|
||||
sb.AppendFormat(CultureInfo.InvariantCulture, "Monitor InstanceId {0}{1}", MonitorInstanceId, Environment.NewLine);
|
||||
sb.AppendFormat(CultureInfo.InvariantCulture, "Monitor Serial Number {0}{1}", MonitorSerialNumber, Environment.NewLine);
|
||||
sb.AppendFormat(CultureInfo.InvariantCulture, "Virtual desktop: {0}{1}", VirtualDesktopId, Environment.NewLine);
|
||||
sb.AppendFormat(CultureInfo.InvariantCulture, "DPI: {0}{1}", Dpi, Environment.NewLine);
|
||||
|
||||
|
||||
@@ -41,10 +41,10 @@ namespace FancyZonesEditor.Models
|
||||
Window.Height = workArea.Height;
|
||||
}
|
||||
|
||||
public Monitor(string monitorName, string virtualDesktop, int dpi, Rect workArea, Size monitorSize)
|
||||
public Monitor(string monitorName, string monitorInstanceId, string monitorSerialNumber, string virtualDesktop, int dpi, Rect workArea, Size monitorSize)
|
||||
: this(workArea, monitorSize)
|
||||
{
|
||||
Device = new Device(monitorName, virtualDesktop, dpi, workArea, monitorSize);
|
||||
Device = new Device(monitorName, monitorInstanceId, monitorSerialNumber, virtualDesktop, dpi, workArea, monitorSize);
|
||||
}
|
||||
|
||||
public void Scale(double scaleFactor)
|
||||
|
||||
@@ -77,6 +77,10 @@ namespace FancyZonesEditor.Utils
|
||||
{
|
||||
public string Monitor { get; set; }
|
||||
|
||||
public string MonitorInstanceId { get; set; }
|
||||
|
||||
public string MonitorSerialNumber { get; set; }
|
||||
|
||||
public string VirtualDesktop { get; set; }
|
||||
|
||||
public int Dpi { get; set; }
|
||||
@@ -128,6 +132,10 @@ namespace FancyZonesEditor.Utils
|
||||
{
|
||||
public string Monitor { get; set; }
|
||||
|
||||
public string MonitorInstance { get; set; }
|
||||
|
||||
public string SerialNumber { get; set; }
|
||||
|
||||
public string VirtualDesktop { get; set; }
|
||||
}
|
||||
|
||||
@@ -309,6 +317,7 @@ namespace FancyZonesEditor.Utils
|
||||
if (!App.Overlay.SpanZonesAcrossMonitors)
|
||||
{
|
||||
string targetMonitorId = string.Empty;
|
||||
string targetMonitorSerialNumber = string.Empty;
|
||||
string targetVirtualDesktop = string.Empty;
|
||||
|
||||
foreach (NativeMonitorData nativeData in editorParams.Monitors)
|
||||
@@ -317,6 +326,7 @@ namespace FancyZonesEditor.Utils
|
||||
if (nativeData.IsSelected)
|
||||
{
|
||||
targetMonitorId = nativeData.Monitor;
|
||||
targetMonitorSerialNumber = nativeData.MonitorSerialNumber;
|
||||
targetVirtualDesktop = nativeData.VirtualDesktop;
|
||||
}
|
||||
|
||||
@@ -324,6 +334,8 @@ namespace FancyZonesEditor.Utils
|
||||
|
||||
var monitor = new Monitor(workArea, monitorSize);
|
||||
monitor.Device.MonitorName = nativeData.Monitor;
|
||||
monitor.Device.MonitorInstanceId = nativeData.MonitorInstanceId;
|
||||
monitor.Device.MonitorSerialNumber = nativeData.MonitorSerialNumber;
|
||||
monitor.Device.VirtualDesktopId = nativeData.VirtualDesktop;
|
||||
monitor.Device.Dpi = nativeData.Dpi;
|
||||
|
||||
@@ -335,7 +347,9 @@ namespace FancyZonesEditor.Utils
|
||||
for (int i = 0; i < monitors.Count; i++)
|
||||
{
|
||||
var monitor = monitors[i];
|
||||
if (monitor.Device.MonitorName == targetMonitorId && monitor.Device.VirtualDesktopId == targetVirtualDesktop)
|
||||
if (monitor.Device.MonitorName == targetMonitorId &&
|
||||
monitor.Device.MonitorSerialNumber == targetMonitorSerialNumber &&
|
||||
monitor.Device.VirtualDesktopId == targetVirtualDesktop)
|
||||
{
|
||||
App.Overlay.CurrentDesktop = i;
|
||||
break;
|
||||
@@ -554,6 +568,8 @@ namespace FancyZonesEditor.Utils
|
||||
Device = new AppliedLayoutWrapper.DeviceIdWrapper
|
||||
{
|
||||
Monitor = monitor.Device.MonitorName,
|
||||
MonitorInstance = monitor.Device.MonitorInstanceId,
|
||||
SerialNumber = monitor.Device.MonitorSerialNumber,
|
||||
VirtualDesktop = monitor.Device.VirtualDesktopId,
|
||||
},
|
||||
|
||||
@@ -818,7 +834,10 @@ namespace FancyZonesEditor.Utils
|
||||
bool unused = true;
|
||||
foreach (Monitor monitor in monitors)
|
||||
{
|
||||
if (monitor.Device.MonitorName == layout.Device.Monitor && (monitor.Device.VirtualDesktopId == layout.Device.VirtualDesktop || layout.Device.VirtualDesktop == DefaultVirtualDesktopGuid))
|
||||
if (monitor.Device.MonitorName == layout.Device.Monitor &&
|
||||
monitor.Device.MonitorSerialNumber == layout.Device.SerialNumber &&
|
||||
(monitor.Device.VirtualDesktopId == layout.Device.VirtualDesktop ||
|
||||
layout.Device.VirtualDesktop == DefaultVirtualDesktopGuid))
|
||||
{
|
||||
var settings = new LayoutSettings
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user