Browse Source

[X11] Force the first screen to be primary if XRandr haven't provided one

pull/13069/head
Nikita Tsukanov 3 years ago
parent
commit
4378ad1dfb
  1. 2
      src/Avalonia.X11/Screens/X11Screen.Providers.cs
  2. 15
      src/Avalonia.X11/Screens/X11Screens.cs

2
src/Avalonia.X11/Screens/X11Screen.Providers.cs

@ -13,7 +13,7 @@ internal partial class X11Screens
{
internal class X11Screen
{
public bool IsPrimary { get; }
public bool IsPrimary { get; set; }
public string Name { get; set; }
public PixelRect Bounds { get; set; }
public Size? PhysicalSize { get; set; }

15
src/Avalonia.X11/Screens/X11Screens.cs

@ -86,8 +86,17 @@ namespace Avalonia.X11.Screens
public int ScreenCount => _impl.Screens.Length;
public IReadOnlyList<Screen> AllScreens =>
_impl.Screens.Select((s, i) => new Screen(_scaling.GetScaling(s, i), s.Bounds, s.WorkingArea, s.IsPrimary))
.ToArray();
public IReadOnlyList<Screen> AllScreens
{
get
{
var rawScreens = _impl.Screens;
if (!rawScreens.Any(s => s.IsPrimary) && rawScreens.Length > 0)
rawScreens[0].IsPrimary = true;
return rawScreens.Select((s, i) =>
new Screen(_scaling.GetScaling(s, i), s.Bounds, s.WorkingArea, s.IsPrimary))
.ToArray();
}
}
}
}

Loading…
Cancel
Save