Files
MesenCE/UI/MesenWindow.cs
SourMesen 40335ce735 UI: Update to Avalonia 12, .NET 10 and replace ReactiveUI with MVVM community toolkit (#142)
Also fixes DX11.0 support (for Win7 PCs that aren't fully updated), which stopped working after the recent variable refresh rate changes
2026-07-03 16:04:42 +09:00

60 lines
1.3 KiB
C#

using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Media;
using Avalonia.VisualTree;
using Mesen.Config;
using System;
namespace Mesen;
public class MesenWindow : Window
{
static MesenWindow()
{
PopupRoot.ClientSizeProperty.Changed.AddClassHandler<PopupRoot>((s, e) => {
foreach(var v in s.GetVisualChildren()) {
SetTextRenderingMode(v);
}
});
}
protected override void OnInitialized()
{
base.OnInitialized();
Focusable = true;
SetTextRenderingMode(this);
}
private static void SetTextRenderingMode(Visual v)
{
switch(ConfigManager.Config.Preferences.FontAntialiasing) {
case FontAntialiasing.Disabled:
TextOptions.SetTextRenderingMode(v, TextRenderingMode.Alias);
break;
case FontAntialiasing.Antialias:
TextOptions.SetTextRenderingMode(v, TextRenderingMode.Antialias);
break;
default:
case FontAntialiasing.SubPixelAntialias:
TextOptions.SetTextRenderingMode(v, TextRenderingMode.SubpixelAntialias);
break;
}
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
if(DataContext is IDisposable disposable) {
disposable.Dispose();
}
//This fixes (or just dramatically reduces?) a memory leak
//Most windows don't get GCed properly if this isn't done, leading to large memory leaks
DataContext = null;
}
}