26 lines
736 B
C#
26 lines
736 B
C#
using System;
|
|
|
|
namespace NotificationFlyout.Shared.UI.Helpers
|
|
{
|
|
internal class WndProcHandlerReference
|
|
{
|
|
private readonly WeakReference _reference;
|
|
|
|
public WndProcHandlerReference(object handler) => _reference = new WeakReference(handler);
|
|
|
|
public bool IsDead => _reference.Target == null;
|
|
|
|
public void Handle(uint message, IntPtr wParam, IntPtr lParam)
|
|
{
|
|
if (_reference.Target == null) return;
|
|
|
|
var target = _reference.Target;
|
|
if (target is IWndProcHandler handler)
|
|
{
|
|
handler.Handle(message, wParam, lParam);
|
|
}
|
|
}
|
|
|
|
public bool Matches(object instance) => _reference.Target == instance;
|
|
}
|
|
} |