Forge
csharp4405de34
1using Avalonia.Platform;
2
3namespace CascadeIDE.Services.Presentation;
4
5/// <summary>
6/// Сопоставление порядка групп в строке <c>presentation</c> физическим дисплеям: общая сетка координат, сортировка слева направо,
7/// затем сверху вниз (ADR 0017 п. 5 — соседство через геометрию, не primary ОС).
8/// </summary>
9public static class PresentationMonitorTopology
10{
11 /// <summary>Упорядочить дисплеи для сопоставления с группами <c>(…) (…) …</c> слева направо, сверху вниз.</summary>
12 public static IReadOnlyList<Screen> OrderScreensForPresentation(IReadOnlyList<Screen> screens)
13 {
14 if (screens.Count <= 1)
15 return screens;
16
17 var arr = screens.ToArray();
18 Array.Sort(arr, static (a, b) =>
19 {
20 var wa = a.WorkingArea;
21 var wb = b.WorkingArea;
22 var c = wa.X.CompareTo(wb.X);
23 return c != 0 ? c : wa.Y.CompareTo(wb.Y);
24 });
25 return arr;
26 }
27}
28
View only · write via MCP/CIDE