using System.Drawing; using System.Windows.Forms; namespace PKHeX.WinForms.Controls; public sealed class DragManager { public SlotChangeInfo Info { get; private set; } = new(); public event DragEventHandler? RequestExternalDragDrop; public void RequestDD(object sender, DragEventArgs e) => RequestExternalDragDrop?.Invoke(sender, e); public void SetCursor(Form? f, Cursor? z) { if (f != null) f.Cursor = z; Info.Cursor = z; } public void ResetCursor(Form? sender) { SetCursor(sender, Cursors.Default); } public void Initialize() { Info = new SlotChangeInfo(); } public void Reset() => Info.Reset(); public Point MouseDownPosition { private get; set; } public bool CanStartDrag => Info.LeftMouseIsDown && !Cursor.Position.Equals(MouseDownPosition); }